Linux/bash/環境変数

Last-modified: 2015-04-09 (木) 02:41:23

Linux/bash

"$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という値を設定しておくと、