&tag(Bash); *目次 [#k301f9e1] #contents *参考情報 [#v39c8200] -[[OKLab - Bourneシェルスクリプト入門(+bash):http://www.oklab.org/program/sh.html]] -[[bash 入門:http://www.hpc.cs.ehime-u.ac.jp/~aman/linux/bash/]] *パラメータ [#y79b6f9d] ,$0,コマンド名 ,$1,1つ目の引数 ,$2,2つ目の引数 ,$*,残りの引数全部 ,$# ,引数の個数 *変数 [#id0375d1] **参考 [#oe39a741] -[[bash シェルスクリプト -PG's PocketArms:http://himana.natsu.gs/bash-001.html]] **基本 [#u13bee70] -小文字でも大文字でも良い。 -宣言時は$を頭につけない。両端にスペースをいれない。 -参照時は$を頭につける。厳密に使いたい時は変数名を{}で囲う必要もある。 #pre{{ a="XYZ" echo "$a" echo "${a}" }} **デフォルト値 [#nf01d82c] -${var:-デフォルト値}で設定できる。 #pre{{ var="a b c" str=${var:-"d e f"} echo $str str=${var2:-"d e f"} echo $str }} *制御構造 [#k5839b22] **if then else [#h8d19587] -[[test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog:http://fumiyas.github.io/2013/12/15/test.sh-advent-calendar.html]]にあるようにまじめに考えるとかなりめんどくさい。"[["は後から追加されたらしい。 -文字列の比較。"["の両方にスペース。"="の両方にスペースが必要。thenを続ける場合、"]"のあとに";"が必要。 -"-o"は"or" #pre{{ if [ str="a b c d e" if [ "$str" = "a b c" -o "$str" = "a b c d" ]; then echo ok else echo ng fi }}