シェルの変数、計算絡みの書式についてメモ。
学習環境はbash(たまにzsh)です。
学習メモにつき、誤り等ありましたら、ぜひご指摘お願いします。
変数
代入 number=1
- 「=」の前後にスペースを入れない
(スペースで区切るとコマンドの引数とみなされるから)
計算式
echo $((5+3))
または
expr 5 + 3
exprコマンドについて
- 計算し、結果を標準出力に出すコマンド。
- 各数値、演算子の間にはスペースが必要(あくまでコマンドの引数だから)
- 掛け算(*)の場合には要エスケープ(コマンドでの「*」は特殊文字だから)
- 例:
expr 5 \* 3
- 同様に、「 ( 」や「 ) 」についてもエスケープが必要
例:expr \( 5 + 3 \) \* 8
コマンド置換
コマンド結果を文字列に変換して、他のコマンドの一部(引数としても可)で使える。
echo "今日は$(date)"
- 「"」をスラッシュ「'」にすると置換されなくなる
- 「$date」は「'date'」でも可
まとめ
スペースの有無はややこしいですが、「何故必要なのか」「なぜ有ってはならないのか」を理解しておくと、忘れなさそうです。
参考
- 『エンジニアなら知っておきたい macOS環境の基本』 株式会社インプレス
- ike-dai's blog 様『exprコマンドで掛け算は注意』https://ike-dai.hatenablog.com/entry/20101026/1288103158