#navi(../)


* forループのサンプル [#na986ed8]
シェルスクリプトのforループのサンプルを以下に記します。~
サンプル例としては、ある値からある値までのループ、ファイルの行単位のループ、コマンドから出力された文字列群をループなどを記述します。~
尚、利用したシェルはbashになります。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連記事 [#a4049d78]
- [[逆引きUNIXコマンド/開始値から終了値までの数値を出力する方法・seqコマンド]]
- [[逆引きシェルスクリプト/スペースが含まれる文字列を1行として扱う方法]]
- [[逆引きUNIXコマンド/ファイルを除くディレクトリ一覧を取得したい]]
- [[逆引きUNIXコマンド/テキストから改行を削除する]]

* ある値からある値までのループ [#e9bcc171]
例えばi=0からi=10までのループをしたい場合のシェルスクリプトサンプルを以下に記します。
#ref(sample-1.sh)
 #/bin/bash
 for i in `seq 0 10`
 do
   echo i=$i
 done

seqコマンドに関しては以下のリンクの記事を参照してください。
- [[逆引きUNIXコマンド/開始値から終了値までの数値を出力する方法・seqコマンド]]

以下のように記述することもできます。
#ref(sample-2.sh)
 #/bin/bash
 for i in {0..10}
 do
   echo i=$i
 done

* ファイルをリードし行単位でループする [#m79b9976]
テキストファイルを行単位でリードして処理をしたい場合のループは以下のように記述します。~

以下のテキストファイルを行単位でリードする例を記します。
 $ cat 1.txt 
 hello
 world
 konnichiwa
 sekai

#ref(sample-3.sh)
 #!/bin/bash
 for l in `cat 1.txt`
 do
   echo l=$l
 done

1行内にスペースが含まれる場合は上記(sample-3.sh)では意図した動作になりません。~
これは、区切り文字としてスペースが有効になっているからです。~
環境変数IFSの値を変更し1行内にスペースが含まれていても区切らないで行単位でリードするには以下のように記述します。~
IFS環境変数に関しては以下のリンクの記事を参照してください。
- [[逆引きシェルスクリプト/スペースが含まれる文字列を1行として扱う方法]]

以下のテキストファイルを行単位でリードする例を記します。(途中に半角スペースが含まれています。)
 $ cat 2.txt 
 hello world
 konnichiwa sekai

#ref(sample-4.sh)
 #!/bin/bash
 IFS_BACKUP=$IFS
 IFS=$'\n'
 for l in `cat 2.txt`
 do
   echo l=$l
 done
 IFS=$IFS_BACKUP

* コマンドから出力された文字列群をループ [#i241c1ed]
内容的には上記と同じですがlsコマンドを使ってディレクトリのみ表示するサンプルスクリプトを以下に記述します。

以下のようなファイルとディレクトリが存在するlsコマンドの出力からディレクトリのみ表示します。
 $ ls -F
 a.txt  b.txt  c.txt  dir1/  dir2/  dir3/

ls -Fオプションに関しては以下のリンクの記事を参照してください。
- [[逆引きUNIXコマンド/ファイルを除くディレクトリ一覧を取得したい]]
trコマンドに関しては以下のリンクの記事を参照してください。
- [[逆引きUNIXコマンド/テキストから改行を削除する]]

#ref(sample-5.sh)
 #!/bin/bash
 for d in `ls -F | grep /$`
 do
   echo d=$d | tr -d '/'
 done

* 複数のキーワードを設定しキーワード分ループする [#r8ee29e1]
キーワードを指定すれば指定したキーワード分ループします。

#ref(sample-6.sh)
 #!/bin/bash
 for k in JPY USD RMB EUR
 do
   echo k=$k
 done

実行結果
 $ ./sample-6.sh 
 k=JPY
 k=USD
 k=RMB
 k=EUR

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS