変数に値を代入するときは,変数と値を「=」でつなぐ. 「=」の右が,左に代入される. 「=」の前後に空白を入れてはいけない.
変数の値を参照するときは,変数の先頭に「$」をつける.
例えば,以下のようなファイル(test.sh)を作成する.
#!/bin/bash word1=Hello word2=World echo $word1 $word2
実行許可を出して,実行する
$ chmod u+x test.sh $ ./test.sh Hello World
空白を含む文字列を代入するときは,クォーテーションで括る.
例えば
#!/bin/bash phrase='Hello World' echo $phrase
これを実行したら
Hello World
変数をつなげるときは,変数の切れ目がわかるように,変数を{}で括る.
例えば
#!/bin/bash YEAR=2019 MONTH=10 DAY=24 echo ${YEAR}${MONTH}${DAY}
これを実行したら
20191024
間に文字を挟むこともできる.
例えば
#!/bin/bash YEAR=2019 MONTH=10 DAY=24 echo ${YEAR}nen${MONTH}gatsu${DAY}nichi
これを実行したら
2019nen10gatsu24nichi
ちなみに,
#!/bin/bash phrase='Hello World' echo $phrase
を実行したら
Hello World
であるが,
#!/bin/bash echo $phrase phrase='Hello World'
は異なる結果になる. 理由はわかりますよね.
「$(」と「)」で囲まれた部分は,コマンドとして処理される(ただし末尾の改行は削除される).
#!/bin/bash files=$(ls) echo $files
実行してみる. 結果を
$ ls
と比べてみる.
ファイルの数を変数に格納するなら
#!/bin/bash filenum=$(ls | wc -l) echo $filenum
実行してみる. 結果を
$ ls | wc -l
と比べてみる.
整数の四則演算は,算術式を $(( と )) で囲む.
二重括弧の中は,変数に $ をつけなくてもよい. すなわち,$(( x + y )) と書いたら,変数xと変数yの和が計算される. もちろん $(( $x + $y )) と書いてもよい.
二重括弧を使った四則演算では,小数は使えない. 除算の戻り値は整数(小数点以下切り捨て)になる.
数値を比較して,真か偽かを返す.
条件が満足されている間,do と done の間を繰り返す.
#!/bin/bash i=1 while [ $i -le 3 ]; do echo $i i=$(( i + 1 )) done
書いたら実行してみる
1 2 3
入れ子にすることもできる.
#!/bin/bash i=1 while [ $i -le 2 ]; do j=1 while [ $j -le 3 ]; do echo $i $j j=$(( j + 1 )) done i=$(( i + 1 )) done
実行したら
1 1 1 2 1 3 2 1 2 2 2 3
与えられた値を代わりばんこに代入して,do と done の間を繰り返す.
#!/bin/bash for word in apple banana cherry; do echo I like $word done
実行
I like apple I like banana I like cherry
こっちも入れ子にすることができる.
#!/bin/bash for dare in I You ; do for fruit in apple banana cherry ; do echo $dare like $fruit done done
実行
I like apple I like banana I like cherry You like apple You like banana You like cherry