bashスクリプト入門編 第4回目です。
「helloworld.sh」はうまく作成できましたか?今回は「helloworld.sh」をもうちょっと拡張してみましょう。
前回、「hellowworld.sh」を作成しましたが、ある程度はbashを掴めましたでしょうか?
今回は、「helloworld.sh」をもうちょっと拡張してみましょう。
前回作成したスクリプトはこんな感じでした。
#!/bin/bash
echo "Hello World!!"
これだけでは寂しいので、もうちょっと拡張してみます。
viで新たに「helloworld2.sh」を開いて、以下を入力してみましょう。
#!/bin/bash
V_OPTION=$1
echo "Hello $V_OPTION World!!"
できましたか?
間違いが無い様であれば、前回と同じく、実行権限を付与して実行してみましょう。
[root@xen01 ~]# chmod +x helloworld2.sh
[root@xen01 ~]# ./helloworld2.sh
Hello World!!
[root@xen01 ~]#
余り変化が無いですね。あると言えば「Hello」と「World!!」の間のスペースが1文字増えた感じでしょうか。
では、次はこのスクリプトに「bash」という文字列(オプション)を付けて実行してみましょう。
[root@xen01 ~]# ./helloworld2.sh bash
Hello bash World!!
[root@xen01 ~]#
どうですか?
出力された文字が「Hello World!!」から「Hello bash World!!」に変わったのが判ると思います。
このスクリプトは、オプションを取得し、そのオプションを表示する様になっています。
オプションは「
$1」という
bashの組込変数に格納されます。
この
bashの組込変数の事を「
位置パラメータ」と言います。
位置パラメータは引数の位置を現しています。一つ目の引数として渡した「bash」という文字列は、
この「
$1」という
位置パラメータに格納される事になります。
今回作成したスクリプトは、2行目で、「
$1」という
位置パラメータから、
「
V_OPTION」という
変数に値(bash)を格納しなおし、3行目の出力文字列内で変数を呼び出して表示しています。
変数は、変数名の前に「$」を付与する事によって、呼び出す事ができます。
ただ、今回作成したスクリプトの様に、変数名に「$」を付与しただけだと変数名が判りづらい時があります。
例えば、今回は「Hello World!!」という文字列の間のスペースで区切られた部分に付与されたオプションを表示するので問題は発生しませんでしたが、
スペースの無い「HelloWorld!!」という文字列の間に表示したかった場合、どうなるでしょうか?
試しにスクリプトを以下の様に改変して実行してみましょう。
#!/bin/bash
V_OPTION=$1
echo "Hello$V_OPTIONWorld!!"
[root@xen01 ~]# ./helloworld2.sh bash
Hello!!
[root@xen01 ~]#
先ほどと違い、「
V_OPTION」変数に格納されている「bash」という文字列が表示されないどころか、
「World」という文字列まで表示されなくなってしまいました。
これは、「V_OPTIONWorld」という変数に格納された文字列、即ち、何も格納されていない変数の値が、
表示されています。この様な事象が発生すると、スクリプトを書いた本人が想定していない実行結果になる事があります。
この様な事を無くす為、変数を「
{」と「
}」で括る事によって、どこまでが変数なのかを明確にした方が良いでしょう。
以下の様に改変して、実行してみてください。
#!/bin/bash
V_OPTION=$1
echo "Hello${V_OPTION}World!!"
[root@xen01 ~]# ./helloworld2.sh bash
HellobashWorld!!
[root@xen01 ~]#
これで想定通りの結果になりましたね。
多少面倒だとは思いますが、変数を呼び出す時は、必ず「
{」と「
}」で括る様にしましょう。
テーマ:Linux - ジャンル:コンピュータ
- 2008/10/11(土) 21:54:27|
- bashスクリプト入門
-
| トラックバック:0
-
| コメント:0