(ほぼ)はじめてのシェルスクリプト
シェルスクリプトとは
まずは言葉の意味から。
シェルとは
与えられた指示をOSの中核部分に伝えるソフトウェア
スクリプトとは
機械語への変換作業を省略した簡易プログラム
まとめると
複数の処理(コマンドなど)をまとめて行うときに使うものです。
文法
決まりごと
1行目に
#!/bin/sh
と書く。
変数の代入
apple=200 //(1) fluit=apple //(2) bread="toast" //(3) today=`date +%Y/%m/%d` //(4)
(1)のように、数字はそのまま代入できます。
(2)と(3)は文字列を代入しています。""はあってもなくてもいいです。
(4)はコマンドの結果を代入しています。`はshift+@です。
変数の参照
変数の参照には$をつけます。
echo $apple echo $fluit echo $bread echo $today
しかし、文字列に変数をくっつける場合、変数と文字列の境目がわかりにくくなるため、
変数は以下のように ${変数名} とするのが良いようです。普段からこれで書こう。
echo "apple is ${apple} yen." echo "${fluit} is one of fluit." echo "I like ${bread}." echo "It is ${today}."
結果はこのようになります。
apple is 200 yen. orange is one of fluit. I like toast. It is 2013/07/15.
計算
他の言語でよくあるのは
//りんごの価格 apple=200 orange=300 //りんごとみかんを買った場合の合計金額 sum=apple+orange
だと思いますが、シェルスクリプトでは変数に計算結果を代入する場合、これでは使えません。
なぜなら、sumへ"apple+orange"という文字列を代入してしまうから。
よって、りんごとみかんの合計金額を出したい場合は、
apple=200 orange=300 sum=`expr ${apple} + ${orange}`
と書きます。
ここで注意しなければならないのは、
- 計算式(右辺)は``(shift+@)で囲む
- 演算子の前後はスペース必須
- 変数の前の$マークを忘れないように(そして{}で囲むのがのぞましい)
の3点。
出力する文を書いたら、結果は以下のようになります。
I bought an apple and an orange for 500 yen.
まとめ(サンプルプログラム)
変数への代入と参照、コマンドの結果の出力(echo_variable_and_command.sh)
#!/bin/sh apple=200 fluit=orange bread="toast" today=`date +%Y/%m/%d` echo "apple is ${apple} yen." echo "${fluit} is one of fluit." echo "I like ${bread}." echo "It is ${today}."
計算と出力(echo_sum.sh)
#!/bin/sh apple=200 orange=300 sum=`expr ${apple} + ${orange}` echo "I bought an apple and an orange for ${sum} yen."