"$1" という環境変数を使用しました。この変数は、コマンドライン引数の 1 番目を参照します。 同様に、"$2" や "$3" なども、スクリプトに渡される引数の 2 番目や 3 番目を参照するために使用することができます。
環境変数設定
- 指定方法
環境変数1=環境変数への設定値 環境変数2="スペース を 含む場合は引用符で囲む"
- 参照方法
$変数名 とする 文字列${変数名}文字列 とすると、文字列中に簡単に格納することができる。
- 指定例
var1="abcdefg"
- 実行例
$ var1="abcdefg" $ echo $var1 abcdefg
予約変数
ループ処理を行う構成体: for
条件文についてはこれぐらいにして、bash のループ構成体の話に移りましょう。まずは標準的な for ループです。基本的な例を以下に示します。
#!/usr/bin/env bash
for x in one two three four
do
echo number $x
done
output: number one number two number three number four
実際にはどのような処理が行われているのでしょう? for ループの for x のブロックでは、$x という新しい環境変数 (ループ制御変数とも言います) を定義しています。この変数には、one、two、three、four という値が連続的に設定されています。それぞれの値の設定後には、ループの本体 (つまり、do と done の間のコード) が 1 度実行されます。この本体では、標準的な変数展開構文を使用して、ループ制御変数 $x をその他の環境変数と同じように参照しています。さらに確認しておきたいのは、for ループが常に、in ステートメントの後の一種の単語リストを受け入れているという点です。この場合は、4 つの英単語を指定しましたが、単語リストでは、ディスク上のファイルやファイル用のワイルドカードを参照しても構いません。以下の例では、シェルにおける標準的なワイルドカードの使用例を示しています。
http://www.ibm.com/developerworks/jp/linux/library/l-bash2.html
変数に対するパターンマッチ
前回、ファイルの拡張子を書き換える例を示したと思います。そこに使ったパターンマッチは4種類あり、非常に汎用性の高いものです。
•${変数#パターン}
変数の内容について、最初の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。
•${変数##パターン}
変数の内容について、最初の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。
•${変数%パターン}
変数の内容について、最後の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。
•${変数%%パターン}
変数の内容について、最後の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。
変数testpathに/home/sekino/Linux/how.to.linuxという値を設定しておくと、