パスワードを忘れた? アカウント作成
628523 journal

zzztkfの日記: for

日記 by zzztkf
for 指定されたコマンドを一括して実行する。sh・bash の内部コマンド

        指定されたファイルに対して、一連のコマンドを実行する。例えば複数のファイルの文字コードを変換したい場合、

                % for i in file1 file2 file3
                > do
                > nkf -e < $i > tmp
                > mv tmp $i
                > done

        とすると、file1、file2、file3 が順にシェル変数 $i にセットされ、nkf と mv が実行される (この例では qkc を使えば文字コードの一括変換ができるのだが)。必ず前後を do と done で挟むこと。また、

                % foreach i in *.txt /tmp/hoge/a??

        などとメタキャラクタを使うこともできる。

                % for i in *.txt
                > do
                > cp $i $i.bak
                > done

        とすると、DOS でいうところの

                % copy *.txt *.txt.bak

        ができる。

                % for i in *.txt
                > do
                > cp $i ${i%.txt}.html
                > done

        だと、拡張子の一括変換ができる。また、for は ; で区切ることで1行で書くことができる。

                % for i in file1 file2 file3 ; do nkf -e < $i > tmp ; mv tmp $i ; done

        for 文は sh・bash の内部コマンドである。csh・tcsh には foreach が用意されている。なお、tcsh の foreach の中で実行したコマンドはヒストリでさかのぼれないのに対して、bash の for は複数行で記述しても、ヒストリでさかのぼると ; で区切った1行の文字列として表示してくれる。bash の勝ち。
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...