Section Next | Prev


3.4.5 繰り返し(while)

表現式が真の場合、ループを繰り返します。
また、C言語と同じように break と continue を組み込む事ができます。
【文法】
	while [ 表現式 ]
	do
		コマンド群
	done

【例】[GetSample]
	$ cat -n dirm
	     1	#! /bin/bash
	     2	# @(#) Print contents of sub-directory
	     3	#
	     4	[ $# -eq 0 ] && set -  `ls`
	     5	
	     6	while [ $# -gt 0 ]
	     7	do
	     8	     if [ -d $1 ]; then
	     9	             n=`ls $1 | wc -l `
	    10	             echo $1 contains $n file
	    11	     fi
	    12	     shift
	    13	done
【解説】
  1. bashにより実行することを宣言
  2. シェルの概要
  3. コメント(空行)
  4. 引数が無い場合は、ls の実行結果を引数として再設定
  5. コメント(空行)
  6. 引数がある限り、13までを繰り返す
  7. ループの開始
  8. もし、1番目の引数に指定されたファイルがディレクトリであれば、11までを実行
  9. 1番目の引数をディレクトリとして ls を実行し、その行数を n に設定
  10. ディレクトリ名とファイル数を表示
  11. ブロック if 分の終了
  12. 引数を1つずらす(3番目を2番目へ、2番目を1番目へずらし、1番目の物は失われる)
  13. ループの終わり

【実行例】
	$ dirm /usr/include
	/usr/include contains 266 file

	$ cd /usr/include
	$ dirm
	DPS contains 26 file
	FLAC contains 12 file
	FLAC++ contains 5 file
	GL contains 18 file
	Magick++ contains 12 file
		: (省略)
この例は、シェル・スクリプト実行時に引き数としてディレクトリ名を渡した時はその ディレクトリについて、引き数を渡さない時は、カレント・ディレクトリのすべての サブディレクトリにあるファイルの数を表示します。

Section Next | Prev

Copyright 2007 ycosSystems Shell/Body345.html