#author("2019-06-18T09:44:15+09:00","default:Miyashita","Miyashita")
#author("2019-06-18T09:44:35+09:00","default:Miyashita","Miyashita")
*bash for文 while文 メモ [#i8134258]
***forループ [#t9400b06]
シェルスクリプトの一般的なループは,for, in ,do, doneを使う.~
単に連続した数値を利用してfor文を使いたければ,seqでリストを生成する.~
下記は,1から10まで番号のついたファイルをコンパイルする例.~
#codeprettify{{
for k in `seq 10`
do
    ifort -heap-arrays -O3 "foobar${k}.for" -o "xfoobar${k}"
done
}}
ファイル名などのテキストと繋げるときは""でくくるのがよい.~

ディレクトリ内の同じ拡張子のファイルにそれぞれ同じ処理をするときは,
#codeprettify(lang-python){{
# .eps を .png に変換(ImageMagick使用)
for f in *.eps; do convert $f ${f//.eps/.png}; done
}}
のような感じ.


***(while) 該当するファイルを検出し,1つずつ処理を行う [#sc04bb30]
findやgrepでパターンマッチしたファイルそれぞれにコピーとか、置換とかしたいとき
#codeprettify{{
find "path" -name "hoge" |while read line; do
    echo $line
    (処理...)
done
}}
ディレクトリの場合は,grepを使う?もっとスマートな方法がありそう.
#codeprettify{{
#codeprettify(lang-python){{
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