第3回Bashゼミ

第3回Bashゼミ
for文処理について
発表者
直江 宗紀
for文

for文



do~doneで囲った部分を繰り返す
for文の記述形式
for 変数 in 値(複数可)
for文の構文例
for 変数 in 引数1 引数2 …
do
処理
done
for文の記述例

プログラム例
for x in a b c d e f g
do
echo $x
done
[実行結果]
a
b
c
d
e
f
g
パラメータ変数との連携

パラメータ変数とは…



スクリプト実行時、スクリプトに渡す引数列
$@,$*,等、スクリプトに渡す引数を参照できる
パラメータ変数を用いたプログラム例
[test.sh]
#!/bin/bash
for arg in $@
do
echo ${arg}
done
[実行結果]
>test.sh aa bb cc dd
>aa
>bb
>cc
>dd
他のコマンドとの連携

for構文では・・・



他のコマンドや配列を用いて利用可能
利用可能コマンドとして
→ seqなどが挙げられる
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 –s ‘,’ 1 2 10
[出力結果]
1,3,5,7,9
seqコマンド(4)

オプションについて(続き)

-w


表示桁を揃えるために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
echo $a
done
[実行結果]
1
3
5
7
9
1から順に2飛びずつカウントする
練習問題
1.
2.
コマンドライン上から任意の数字を渡した時、1
からその数字までの総和を求めて表示するス
クリプトを作成せよ。
コマンドライン上から任意の数字を渡した時、
その数字までに幾つ素数があるのかをカウント
し、その結果を表示するスクリプトを作成せよ。
(コマンド”factor”を利用する)