トップページunix
1001コメント297KB

シェルスクリプト総合 その22

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2013/11/01(金) 07:58:50.52
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その21
http://toro.2ch.net/test/read.cgi/unix/1352973453/
0630名無しさん@お腹いっぱい。2014/03/28(金) 19:37:00.09
>>629
if [ -n "${file:-}" ]; then
の場合はそもそも set -u ではミス検出できない。
$file の状態がどちらであっても正常だから。

お前ホントに何もわかってないのな
0631名無しさん@お腹いっぱい。2014/03/28(金) 20:14:13.71
>>628
それ、全然意味が違う
0632名無しさん@お腹いっぱい。2014/03/28(金) 20:16:29.56
>>630
「set -u を使う事を前提とするなら」、 if [ -n "${file}" ]; then と書くべきなんじゃないか?って話
0633名無しさん@お腹いっぱい。2014/03/28(金) 20:54:49.04
>>632
正反対。

「set -u を使う事を前提とするなら」、 if [ -n "${file:-}" ]; then と書くべき

set -u には、${file} 以外の箇所を検出させる。 $hoge とかが他の場所にある。
0634名無しさん@お腹いっぱい。2014/03/28(金) 20:56:38.96
>>631
言葉の表面上の意味でしか捉えられないアスペ乙
0635名無しさん@お腹いっぱい。2014/03/28(金) 21:01:24.80
>>632
Makefileで、 (コマンド || true) とかやってエラーにならないようにするのと同じようなもの。
この行だけ set -u に検出されないように "${file:-}" って書くわけ。

C言語でwarning消すためにキャストするのとも似てる。
warning消しておかないと本当のwarningが出る他の行と紛らわしいから。
0636名無しさん@お腹いっぱい。2014/03/28(金) 21:05:43.98
>>634
「アスペ」の使い方間違ってるぞ
0637名無しさん@お腹いっぱい。2014/03/28(金) 21:08:00.67
>>633
う〜ん、間違えて if [ -n "${flie:-}" ]; then って書いちゃったらどうするの?
0638名無しさん@お腹いっぱい。2014/03/28(金) 21:10:16.75
>>637
そこは検出できないから仕方ない
0639名無しさん@お腹いっぱい。2014/03/28(金) 21:11:38.06
>>635
それもよく判らないなぁ。$file が未定義なのかNULLなのか判別しないまま
スクリプトの実行を続けても構わない、ってこと?
0640名無しさん@お腹いっぱい。2014/03/28(金) 21:13:02.51
>>638
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄
0641名無しさん@お腹いっぱい。2014/03/28(金) 21:45:19.90
その例だと分かりづらいのかも

他の例を挙げると、引数を確認する目的で

echo "arg1=${1} arg2=${2}"

と書くのを、

set -u
echo "arg1=${1:-} arg2=${2:-}"

としないといけない、とか
0642名無しさん@お腹いっぱい。2014/03/28(金) 22:01:46.73
>>630,633,635

それだったら

file=""
:
:
if [ -n "${file}" ]; then

って書いたほうがいいんじゃない? 変数名の書き間違ちがいもチェックできるし
0643名無しさん@お腹いっぱい。2014/03/28(金) 23:00:21.83
${xxxx:?msg}の事も思い出してあげてください。
0644名無しさん@お腹いっぱい。2014/03/29(土) 01:03:16.20
こんな機能があるのな
いままでif連打して引数判定してたのが馬鹿馬鹿しくなってきた
三項演算子とかでググってたのがいけなかったのか
0645名無しさん@お腹いっぱい。2014/03/29(土) 01:15:17.92
>>632>>633
どっちも正解
「set -u を使う事を前提とするなら」「空文字列判定を意図する部分では」「if [ -n "${file}" ]; then と書くべき」
「set -u を使う事を前提とするなら」「未設定の判定も意図する部分では」「if [ -n "${file:-}" ]; then と書くべき」
>>636
アスペ(もとい自閉症スペクトラム)の症状は色々な方向性がありうるから一概に間違ってるとも言えない
0646名無しさん@お腹いっぱい。2014/03/29(土) 02:09:20.43
>>645
とはいえ、>>634 は単に「アスペ」って言いたいだけなんじゃないかと
色々な方向性がありうるとなると >>634 がアスペなのかもしれないが…
0647名無しさん@お腹いっぱい。2014/03/29(土) 06:59:56.80
なんだよ、もっとサニタイズしろよw
0648名無しさん@お腹いっぱい。2014/03/29(土) 08:35:58.71
そんなに悔しかったのか? エスケープ脳 w
シェルスクリプトでSQLをエスケープして見せてくれよ。
0649名無しさん@お腹いっぱい。2014/03/29(土) 08:44:55.13
へんぴなスレで無理やり対立煽られてもなあ
困っちゃう(社交辞令
0650名無しさん@お腹いっぱい。2014/03/29(土) 09:02:19.23
>>645
それを踏まえて >>625 を言っている。
どうも根本的にわかって奴が一人いるようだけど・・。

set -u は未設定(というミス)を検出するためにやっている。
その状況で、「この変数は未設定かもしれないけどエラーにならないようにしよう」とするぐらいなら
空文字列でも設定しておけ、ってこと。
0651名無しさん@お腹いっぱい。2014/03/29(土) 09:10:53.25
>>650
空文字列設定するのにもう1行要る。ダサイ書き方になる。
空文字列設定すること自体が副作用になるから、それがNGの場合がある。
未設定変数は未設定のまま(空文字列も設定せずに)放置して、ifで条件判断だけしたい場合とか。
0652名無しさん@お腹いっぱい。2014/03/29(土) 09:13:54.84
>>642
fileにすでに何か設定されてるかも知れない状態で呼び出されるスクリプトまたは関数だったら、
file='' とかやったら駄目じゃんw (ちなみに、file= だけでもOK クォート不要)
0653名無しさん@お腹いっぱい。2014/03/29(土) 12:53:55.37
>>650
一行増えるのがダサイねぇ… 副作用が NG とか if で条件判断だけしたい
場合って具体的にはどんな場合なの?
0654名無しさん@お腹いっぱい。2014/03/29(土) 12:56:00.32
>>653
>>652
0655名無しさん@お腹いっぱい。2014/03/29(土) 13:01:32.12
>>652
その前提だったら未定義かどうか調べないでいきなり if [ -n "${file:-}" ];then って
しちゃったらまずいだろって話。ああ、 >>639 に戻ったw
0656名無しさん@お腹いっぱい。2014/03/29(土) 13:06:40.79
>>655
その前提だからこそ未定義(空文字列含む)かどうか調べるために if [ -n "${file:-}" ];then って
してるんだろ。お前理解遅いなw
0657名無しさん@お腹いっぱい。2014/03/29(土) 13:09:21.66
前提:未定義と空文字列は同じとみなす
(未定義or空文字列)なのか、文字列がセットされてるのか調べたい
変数に勝手に空文字列を代入してはいけない
調べる際に、set -u された環境でもエラーにされないようにしたい

それだけのこと。簡単だねw
0658名無しさん@お腹いっぱい。2014/03/29(土) 13:10:26.59
>>656
ん?調べてないよ。未定義でも空文字でも false になる
0659名無しさん@お腹いっぱい。2014/03/29(土) 13:11:38.13
>>658
それでいいんだけど、、何勘違いしてるの、君一人?
0660名無しさん@お腹いっぱい。2014/03/29(土) 13:13:22.49
>>658>>657 読め。

未定義でも空文字でも false にしたい。
文字列が長さ1以上あれば true にしたい。

未定義のとき、set -u を回避したい。
0661名無しさん@お腹いっぱい。2014/03/29(土) 13:13:44.48
>>659
>>637
0662名無しさん@お腹いっぱい。2014/03/29(土) 13:14:52.57
>>661
>>638
0663名無しさん@お腹いっぱい。2014/03/29(土) 13:15:54.57
>>662
それじゃ set -u 使う意味ないんじゃない?
0664名無しさん@お腹いっぱい。2014/03/29(土) 13:16:55.00
>>661
C言語でwarning回避するためにキャストしたとき、キャスト元の方が本当に間違っていても検出できないのと同じ。そこは問題にしない。
0665名無しさん@お腹いっぱい。2014/03/29(土) 13:17:47.16
>>663
>>633
0666名無しさん@お腹いっぱい。2014/03/29(土) 13:18:57.95
>>664
いや、C言語のワーニング回避とは関係ない
0667名無しさん@お腹いっぱい。2014/03/29(土) 13:20:06.55
>>665
結局、放置しておいて問題ない、と
0668名無しさん@お腹いっぱい。2014/03/29(土) 13:21:52.32
これ、誰が暴れてるの?
外した回答叩かれた >>615 が一人で暴れてるのかな?
0669名無しさん@お腹いっぱい。2014/03/29(土) 13:22:49.28
そろそろ、一種の集団ヒステリーを述べる言葉、
あるいはひとつの格言を挙げておきたい

「バカは感染する」
0670名無しさん@お腹いっぱい。2014/03/29(土) 13:22:58.30
>>668
スマン、実は >>620-668 は全部俺の自作自演なんだ
0671名無しさん@お腹いっぱい。2014/03/29(土) 13:23:52.27
>>669
ああ、キミも感染したんだね
0672名無しさん@お腹いっぱい。2014/03/29(土) 13:31:36.21
大元の >>612 で言ってる「こういう書き方をしてるスクリプト」
の全体を見てみたいものだ
0673名無しさん@お腹いっぱい。2014/03/29(土) 14:18:33.42
話は変わるけど、set -u を使わないで変数が未定義なのかどうかを
調べるってお題があって、

undef="false"
if [ "${var-UNDEF}" = "UNDEF" ];then
 if [ "$var" = "" ];then
  undef="true"
 fi
fi

なんで空文字かどうかを調べてるんだろうって思ったら var="UNDEF" って
なってる場合に対応してたのね
0674名無しさん@お腹いっぱい。2014/03/29(土) 14:28:34.93
>>673
変数が未定義という条件判断をするなら、

if [ -z "${var+DEF}" ]; then echo varは未定義; fi

だけで簡単に記述できるね。
0675名無しさん@お腹いっぱい。2014/03/29(土) 14:30:42.74
>>672
set -u 回避が正解って前提で話が盛り上がってたけど
全然関係なかったりしてw
0676名無しさん@お腹いっぱい。2014/03/29(土) 14:34:51.56
>>674
おお、素晴らしいφ(..)メモメモ
0677名無しさん@お腹いっぱい。2014/03/29(土) 20:36:49.57
>>672
> 大元の >>612 で言ってる「こういう書き方をしてるスクリプト」
> の全体を見てみたいものだ

例えば、

$ grep -iE '\$\{[a-z]+:' /usr/sbin/mkinitramfs
if [ -n "${UMASK:-}" ]; then
if [ -z "${compress:-}" ]; then
DESTDIR="$(mktemp -d ${TMPDIR:-/var/tmp}/mkinitramfs_XXXXXX)" || exit 1
__TMPCPIOGZ="$(mktemp ${TMPDIR:-/var/tmp}/mkinitramfs-OL_XXXXXX)" || exit 1
if [ -n "${ROOT:-}" ]; then

全体は長すぎるので省略します、あしからず
0678名無しさん@お腹いっぱい。2014/03/29(土) 22:01:34.99
mkinitramfs、-o オプションを付けないと outfile 変数は
set -u で引っ掛かってしまうのにそのままなんだな…?

if [ -z "${outfile}" ]; then
usage
fi
0679名無しさん@お腹いっぱい。2014/03/29(土) 22:07:19.97
報告したげて。
0680名無しさん@お腹いっぱい。2014/04/02(水) 09:19:47.77
外部プログラムにスペースを含む引数を渡したい
この引数は他の引数と一緒にシェル変数に格納される
このシェル変数名は別の変数に変数名で格納されていて
実行時にevalして実行される
試行錯誤した結果二回evalという解決策にたどり着いたけど、何かスマートじゃない。
もっとスマートな方法はある? スペースを含まないなら一回のevalで済むんだが。
argspecをevalって実行するという部分はいじれないのでそれは無しの方向で
抜粋部分はこんな感じ

echo_it() { for a; do echo $a; done; }
argspec="\$opts $DEFAULTS"

opts=
opts="$opts arg1"
opts="$opts \"arg with space\""

eval set $argspec
eval echo_it "$@"
0681名無しさん@お腹いっぱい。2014/04/02(水) 10:45:04.64
俺なら、どこか前処理でスペースを別の使わない文字か
あるいは使われない単語に変換して、呼ばれた側で同様に変換して戻す
という方式にする
無理にスペースをエスケープするより、綺麗になることが多い
0682名無しさん@お腹いっぱい。2014/04/02(水) 15:23:14.11
>>681 と被るけど、IFS を TAB だけにしちゃうとか
(ただし、引数にTABを含む文字列が使えなくなるけど)

opts="$opts arg1"
opts="$opts arg with space"

argspec="$opts $DEFAULTS"

OLD_IFS=$IFS; IFS=$'\t'
set -- $argspec
echo_it "$@"
IFS=$OLD_IFS

スマートかどうかは…不明
0683名無しさん@お腹いっぱい。2014/04/24(木) 01:59:44.80
テキストファイルについて、grepしたりsedしたり…といった整形処理をするシェルスクリプトを
作ってます

このファイルの末尾6行は不要なので、今は前処理で head -n -6 として削ってるのですが、
シェルスクリプト中でawkを使ってる部分が結構あるので、その処理をawkにて
置き換えられないだろうか、と考えてます

awk '/hoge/{
 do {
  〜処理〜
  if (NR > 総行数 - 6) exit; ←
 } while (getline)
}'

…みたいに「←」の様な記述を加えてやればよいのかなと思ってたのですが、しかし総行数は
ENDセクションにならないと分からないということでうまくいきませんでした
awkでうまく処理する方法、ありますでしょうか

事前にwcで行数を数えておき、それをawkに総行数の変数として渡して…というのは
うまくいったのですが、パイプが途切れるためかwcの仕様か、性能がかなり悪化してしまいました
0684名無しさん@お腹いっぱい。2014/04/24(木) 07:08:22.64
perl使えるのなら@lines=<>;とすると、行単位に配列に入るのでspliceと組み合わせれて便利かも?
0685名無しさん@お腹いっぱい。2014/04/24(木) 07:38:17.98
awkでやりたいんだよ!
0686名無しさん@お腹いっぱい。2014/04/24(木) 08:00:48.93
6行分のバッファを持っといて1行読むごとに6行前の行を処理すればいいんだけど、awkでどう書くかは知らない
0687名無しさん@お腹いっぱい。2014/04/24(木) 15:39:50.84
{
a[NR]=$0
if (NR>6){
$0=a[NR-6]
} else {
next
}
}

ってのをスクリプトの先頭につっこんでおけばいいかな。試してないけど。でも、
>このファイルの末尾6行は不要なので、今は前処理で head -n -6 として削ってるのですが、
これでいいと思う。
06886832014/04/24(木) 23:52:15.46
皆さん意見ありがとうございました

6行分のバッファを、と見て、ほほーと思って途中まで実装してみましたが、
なんというか、非常によく分からないスクリプトになってきたので、やめました…

現状どおり、headで削る、でいこうと思います
0689名無しさん@お腹いっぱい。2014/04/25(金) 01:29:19.17
>>687
入力全部配列に突っ込むなら、普通に全部読み込んでから処理した方がいいんじゃね?
0690名無しさん@お腹いっぱい。2014/04/25(金) 02:26:46.70
a[NR%7]とa[(NR-6)%7]にすれば良いんじゃね。
0691名無しさん@お腹いっぱい。2014/04/25(金) 03:20:34.41
$ seq 1 10 | awk 'NR > 6 {print _[NR%6]} {_[NR%6] = $0}'
1
2
3
4
0692名無しさん@お腹いっぱい。2014/04/25(金) 06:49:31.64
リングバッファーきたー
0693名無しさん@お腹いっぱい。2014/04/25(金) 08:33:17.57
て言うか、定番でしょ。
0694名無しさん@お腹いっぱい。2014/04/25(金) 08:47:19.19
>>691
printしてしまわずに、そのあとの目的のawk処理につなげるにはどう書くの?
awk 2つをパイプでつないだのでは無駄なので。
0695名無しさん@お腹いっぱい。2014/04/25(金) 09:01:48.69
687を690にして使うか、691でprintの所に処理本体を_[NR%6]使って書き直す
0696名無しさん@お腹いっぱい。2014/04/25(金) 09:54:31.02
>>691
$0に代入直して新規行入力のつもりで処理を続行すればいい。

awk '{if(NR>6){$0=_[NR%6]}else{_[NR%6]=$0;next}} {ここにやりたい処理}'
0697名無しさん@お腹いっぱい。2014/04/25(金) 10:05:51.33
>>696
馬鹿は書き込むな。それ全然駄目。
0698名無しさん@お腹いっぱい。2014/04/25(金) 16:55:01.02
>>697
俺awk使えないから予想だけど、%0以外の自動更新される値が6行先になる?
0699名無しさん@お腹いっぱい。2014/04/25(金) 17:56:08.98
GWにシェルを始めようと思ってます。
cshは古い、bshは当たり前? じゃあashか? ashより優れた sshにするか?

コンサートだとA席よりS席の方が上ですよね?
0700名無しさん@お腹いっぱい。2014/04/25(金) 17:59:12.63
>>699
コピペ
http://toro.2ch.net/test/read.cgi/unix/1266323017/976
07016912014/04/25(金) 23:22:31.10
素直にhead使っとき。↓bash

$ paste <(seq 1 10) <(seq 11 20) | awk '{l = $0} NR>6 {$0 = _[NR%6]} {_[NR%6] = l} NR>6 { printf "%d + %d = %d\n", $1, $2, $1 + $2 }'
1 + 11 = 12
2 + 12 = 14
3 + 13 = 16
4 + 14 = 18
0702名無しさん@お腹いっぱい。2014/04/28(月) 02:44:42.99
見れば見るほど、head併用が正解だな
0703名無しさん@お腹いっぱい。2014/04/28(月) 12:54:44.58
UNIX哲学
http://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6
1. 小さいものは美しい。
2. 各プログラムが一つのことをうまくやるようにせよ。
3. できる限り原型(プロトタイプ)を作れ。
4. 効率よりも移植しやすさを選べ。
5. 単純なテキストファイルにデータを格納せよ。
6. ソフトウェアの効率をきみの優位さとして利用せよ。
7. 効率と移植性を高めるためにシェルスクリプトを利用せよ。
8. 束縛するインターフェースは作るな。
9. 全てのプログラムはフィルタとして振る舞うようにせよ。
0704名無しさん@お腹いっぱい。2014/04/28(月) 13:02:19.25
>>703
板ちがい
0705名無しさん@お腹いっぱい。2014/04/29(火) 05:48:42.07
コレに従ってればわりとハッピーなスクリプトが書けるって話だからスレにはあってると思うが。
板に至ってはUNIX板より適切な板はないだろってレベル
0706名無しさん@お腹いっぱい。2014/04/29(火) 06:25:19.06
systemdはこれに反しまくってるな
特にjournaldなんか独自バイナリにログ入れて
journalctlでしか見れないようにしててめっちゃ不便
0707名無しさん@お腹いっぱい。2014/04/29(火) 08:52:18.75
>>706
ほんとこれ
トラブったときのログも特定の環境でしか読めないとか氏んでほしい
0708名無しさん@お腹いっぱい。2014/05/05(月) 18:29:35.56
>>706
マジかよクソすぎんだろsystemd
0709名無しさん@お腹いっぱい。2014/05/18(日) 05:09:49.37
シェルスクリプトはいい加減滅びろよと思うのは私だけ?
バッチ処理ならいいけど、条件分岐が入った時点でperlなりpythonなり使えと思うんだけど
0710名無しさん@お腹いっぱい。2014/05/18(日) 05:30:13.26
>>709
perlやpythonが入ってない(入れられない)環境もあるってことなんじゃ。
組み込み、UNIX、Linuxでもシェルさえある環境ならOK、
ってのはなかなか強力な利点じゃないかね。
0711名無しさん@お腹いっぱい。2014/05/18(日) 06:26:03.13
>>709
ashならバージョン互換性とか気にしなくて良いんじゃないの。
置き換えられてたらpython2.7とか一生アンインストールできなくなりそう。
0712名無しさん@お腹いっぱい。2014/05/18(日) 08:33:26.39
個人的にはperlこそいい加減滅びよと思ってるけどな
0713名無しさん@お腹いっぱい。2014/05/18(日) 09:07:08.76
system();だらけのスクリプトとか後で読みたくないし書きたくない。 空白入りの引数の処理も面倒そう。
シェルスクリプトなら3〜4行で終わるものが、何十行にもなってる python スクリプト見たこともあるわ。
0714名無しさん@お腹いっぱい。2014/05/18(日) 09:19:25.75
適材適所なんだしどっちかに滅びろよとか言ってる時点でどうかと思うな
何でbashで条件分岐使っちゃ駄目なのか良く分からんし
バッチ処理って単語の使い方が何か違う気がするし
0715名無しさん@お腹いっぱい。2014/05/18(日) 09:27:05.58
bashを使ったらそれはバッチ処理ではなくてバッシュ処理だからな
0716名無しさん@お腹いっぱい。2014/05/18(日) 10:30:08.01
つ、つまらん…
0717名無しさん@お腹いっぱい。2014/05/18(日) 16:55:44.52
シェルの基本的なコマンドを網羅したライブラリはほしいね。
そうすれば ` ` を使わなくて済む
0718名無しさん@お腹いっぱい。2014/05/18(日) 16:58:20.56
perlのCPANなら数は多いし大抵のことはできるんじゃないの
でもいちいちライブラリ入れるの面倒だし
仕事でサーバとか使ってると「追加ソフト入れるの禁止」
って状況はそれなりにある
0719名無しさん@お腹いっぱい。2014/05/18(日) 18:19:52.61
知らん間に開発・検証用マシンに入ってたCPANのライブラリに依存しており、
商用じゃそのPerlスクリプトが動かんかった、という凡ミスが連発した結果、
必要なライブラリを書面で説明できないPerlスクリプトは商用適用NG、となった
0720名無しさん@お腹いっぱい。2014/05/18(日) 18:24:43.11
自分で書いてみればperlやpythonよりシェルスクリプトの方が便利だってわかるのにな
コマンドの実行とか
0721名無しさん@お腹いっぱい。2014/05/19(月) 08:37:18.45
適材適所


ただし、perl の適所はなくなったので、早く滅びろ
0722名無しさん@お腹いっぱい。2014/05/20(火) 12:54:25.01
perlに親でも殺されたか
0723名無しさん@お腹いっぱい。2014/05/20(火) 13:11:40.74
じゃ、一行野郎は何使うんだよ。
0724名無しさん@お腹いっぱい。2014/05/20(火) 13:20:31.01
シェルスクリプトでええやん…
0725名無しさん@お腹いっぱい。2014/05/20(火) 17:30:45.52
シェルスクリプトの意味わかってないだろ
0726名無しさん@お腹いっぱい。2014/05/20(火) 17:51:03.17
>>723
rubyでいいんじゃない。短くかけるし。括弧言語じゃないから定義とか書くのは辛いけど、処理だけが目的なら代替手段あるだろうし。
0727名無しさん@お腹いっぱい。2014/05/20(火) 18:07:09.84
rubyがインストールされてるサーバは、少なくとも俺の身近には存在しない。
perlが駄目だと言うのなら、次に考えるのはawkかsedだろ。常識的に考えて。
0728名無しさん@お腹いっぱい。2014/05/20(火) 18:08:45.41
好きなの使えばええがな。
0729名無しさん@お腹いっぱい。2014/05/20(火) 18:14:46.31
>>726
ruby()

>>727
sedでは足りないのをperl使うのだ
awkは半端だからフィールド抽出以外には使わない

結論: 一行野郎に対する代替が無いのでperlは存命
■ このスレッドは過去ログ倉庫に格納されています