bashのfor文で配列やセパレータ付き文字列から各要素を取り出す

bashのfor文の仕様、使い方をmanを見て確認し、実際に配列や$PATH環境変数に対して使用してみました。

1)構文1
 
for name [ [ in [ word … ] ] ; ] do list ; done
 
①”word”を構成するリストから各要素が”name”変数に設定される。
②”list”内で、①で設定された”name”を使ってコマンド実行
 
例)
・環境変数PATHに設定されているディレクトリを1行ずつ”ls -ld ディレクトリ”で表示する。
・環境変数PATHは、”:”で区切られているので、IFS環境変数で区切り文字として”:”を指定する。

IFS=:
for dir in $PATH ; do
  ls -ld $dir
done

 
2)構文2
 
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
 
・expr1
最初に評価される算術式
・expr2
0と評価されるまで繰り返し評価される算術式。
その際にlistが実行され、expr3が実行される。
 
例)
・配列の各要素を一つずつ表示する。
・配列の各要素への参照は下記構文を使用。
${array[i]}
・配列のすべての要素の長さは下記構文を使用。
${#array[@]}

names=(one two three)
for (( i=0 ; i<${#names[@]}; i++ )) ; do
  echo ${names[i]}
done
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です