forのループでコマンド結果を処理する構文
forを使ったループ処理
ディレクトリにある複数ファイルに対して、コマンドを実行するシェルを作ってみます。
ディレクトリには、6つのファイルが存在しています。
$ ls -l total 0 -rw-r--r-- 1 root system 0 Nov 06 14:31 AAA -rw-r--r-- 1 root system 0 Nov 06 14:31 BBB -rw-r--r-- 1 root system 0 Nov 06 14:31 CCC -rw-r--r-- 1 root system 0 Nov 06 14:31 DDD -rw-r--r-- 1 root system 0 Nov 06 14:31 EEE -rw-r--r-- 1 root system 0 Nov 06 14:31 FFF $
これらのファイルを、echoで「”ファイル名” があります。」というコマンドをforで繰り返すシェルを作ります。
シェル名は「for_echo.sh」とします。
シェル内容はこのようになります。
$ vi for_echo.sh for FILE_NAME in `ls ./files`;do echo "$FILE_NAME があります。" done
内容としては、コマンド「ls ./files」でリストされた複数のファイルを、1つづつ変数「FILE_NAME」に代入して、
「echo $FILE_NAME があります。」を実行しています。
実行するとこのような結果になります。
$ for_echo.sh AAA があります。 BBB があります。 CCC があります。 DDD があります。 EEE があります。 FFF があります。 $