第3回Bashゼミ for文処理について 発表者 直江 宗紀
for文 for文 do~doneで囲った部分を繰り返す for文の記述形式 for 変数 in 値(複数可) for文の構文例 処理 done
for文の記述例 プログラム例 [実行結果] a b for x in a b c d e f g c do d echo $x e done
パラメータ変数との連携 パラメータ変数とは… パラメータ変数を用いたプログラム例 スクリプト実行時、スクリプトに渡す引数列 $@,$*,等、スクリプトに渡す引数を参照できる パラメータ変数を用いたプログラム例 [test.sh] #!/bin/bash for arg in $@ do echo ${arg} done [実行結果] >test.sh aa bb cc dd >aa >bb >cc >dd
他のコマンドとの連携 for構文では・・・ seqとは 他のコマンドや配列を用いて利用可能 指定した数字の間をカウントし表示する 例:seq 1 2 10 意味:1から10まで2足しながらカウントする
seqコマンド(1) seq –数字シークエンス表示コマンド 記述 オプション seq [OPTION] LAST seq [OPTION] FIRST LAST seq [OPTION] FIRST Increment LAST オプション -f:フォーマット指定(%e, %f ,%g のうち1つ) -s:指定文字列を区切りにする -w:数字桁を揃えるために上位桁に0を入れる
seqコマンド(2) オプションについて(続き) -f 指定フォーマット[%e,%f,%g] (通常は%g) %e : 浮動小数点表示(記述例:1.0000e+00) %f : 小数表示 %g : 整数表示 (%e,%f表示の際、指定最終値は表示されない)
seqコマンド(3) オプションについて(続き) -s 指定した文字列を区切り文字とする (通常は“\n”)
seqコマンド(4) オプションについて(続き) -w [出力結果] 01 02 03 04 05 06 07 08 09 10 表示桁を揃えるために0を出力 例: seq –w 1 10 [出力結果] 01 02 03 04 05 06 07 08 09 10
seqコマンド(5) オプションについて 記述位置はseqのすぐ後でのみ有効 (数字の後ろではエラーとなる) 例: seq –f %f 1 2 10 [実行結果] 1.000000 3.000000 5.000000 7.000000 9.000000
連携プログラム例 プログラム例 for a in seq 1 2 10 [実行結果] do 1 echo $a 3 done 5 7 9 1から順に2飛びずつカウントする
練習問題 コマンドライン上から任意の数字を渡した時、1からその数字までの総和を求めて表示するスクリプトを作成せよ。 コマンドライン上から任意の数字を渡した時、その数字までに幾つ素数があるのかをカウントし、その結果を表示するスクリプトを作成せよ。 (コマンド”factor”を利用する)