bash for文 while文 メモ

forループ

シェルスクリプトの一般的なループは,for, in ,do, doneを使う.
単に連続した数値を利用してfor文を使いたければ,seqでリストを生成する.
下記は,1から10まで番号のついたファイルをコンパイルする例.

for k in `seq 10`
do
    ifort -heap-arrays -O3 "foobar${k}.for" -o "xfoobar${k}"
done

ファイル名などのテキストと繋げるときは""でくくるのがよい.

(while) 該当するファイルを検出し,1つずつ処理を行う

findやgrepでパターンマッチしたファイルそれぞれにコピーとか、置換とかしたいとき

find "path" -name "hoge" |while read line; do
    echo $line
    (処理...)
done

ディレクトリの場合は,grepを使う?もっとスマートな方法がありそう.

find "path" -type d |grep "hoge" |while read line; do
    mv $line ${line//org/new} #ディレクトリ名の変更
done

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-01-07 (Sun) 07:45:59 (375d)