シェルスクリプト関係のメモ、bashね
引数ではなくてオプションを利用する方法
オプションとはコマンドラインに -a HOGEHOGE などと指定するあれ。
bashには組み込みでgetoptsがあるのでこれを使う while getopts a:bc _OPT do case $_OPT in a ) VALUE_A=$OPTARG ;; b ) FLAG_B=true ;; c ) FLAG_C=true ;; esac done コロンがついてるやつは$OPTARGにその引数が入っているので変数に落す コロンなしのやつはフラグがセットされることになる これを関数として登録して、親玉から 関数名 $@ とかして呼び出すこのgetoptsだと、a~zの26文字と数字10個がオプション文字列として利用可能だ!
exprを使う
$ expr 10 * 20 expr: syntax error $ expr 10 \* 20 200
bcを使う
$ echo "0.1 + 0.2" | bc .3 $ echo "0.1 * 0.2" | bc 0 $echo "scale=10; 0.1 * 0.2" | bc .02
scale=桁 小数点以下の桁を指定する。初期値は0 length=桁 有効桁数を指定する length ( 数値 ) 指定した数値の有効桁数を返す scale ( 数値 ) 指定した数値の小数点以下の桁数を返す ibase=基数 入力の基数を指定する。初期値は10 obase=基数 出力の基数を指定する。初期値は10 last 最後にbcが出力した値 ( 式 ) 括弧内の式を先に計算する 変数 ++ 指定した変数に1を足す 変数 -- 指定した変数から1を引く 数値1 + 数値2 数値1と数値2を足し合わせる 数値1 - 数値2 数値1から数値2を引く 数値1 * 数値2 数値1と数値2を掛け合わせる 数値1 / 数値2 数値1から数値2を割る 数値1 % 数値2 数値1から数値2を割った余り 数値1 ^ 数値2 数値1の数値2乗 s ( 数値 ) sin (数値はラジアン) c ( 数値 ) cos (数値はラジアン) a ( 数値 ) atan (結果の単位はラジアン) l ( 数値 ) log e ( 数値 ) exp sqrt ( 数値 ) 指定した数値の平方根を返す 数値1 == 数値2 数値1と数値2が等しいなら「1」を返す 数値1 != 数値2 数値1と数値2が等しくないなら「1」を返す 数値1 < 数値2 数値1が数値2より小さいなら「1」を返す 数値1 <= 数値2 数値1が数値2より小さいまたは等しいなら「1」を返す 数値1 > 数値2 数値1が数値2より大きいなら「1」を返す 数値1 >= 数値2 数値1が数値2より大きいまたは等しいなら「1」を返す !式 式の論理的に反対を返す 式1 && 式2 式1と式2が共に真ならば「1」を返す 式1 || 式2 式1と式2のいずれかが真ならば「1」を返す return ( 戻り値 ) 関数から戻る quit bcを終了する if (条件式) 分岐を行う while (条件式) 繰り返しを行う for (初期処理;条件;繰り返しごとの処理) 指定した回数繰り返す
return 指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは関数内で最後に実行した コマンドの返却ステータスになります。関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行中である場合、シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの終了ステータスをスクリプトの終了ステータスとして返します。関数の外側で . によるスクリプトの実行中以外に使われた場合、返却ステータスは偽となります。
exit ステータス n でシェルを終了させます。 n を省略すると、終了ステータスは最後に実行したコマンドの 終了ステータスとなります。シェルが終了する前には、 EXIT に対するトラップが実行されます。