bash構文まとめ
目的
cshからbashに環境が変わり細かいルールや、そもそもの構文の違いなどに戸惑うことがあるので自分用チートシートとしてまとめました。
随時更新していきます。参照頻度が多いので、記事TOPに表示されるように日付を弄ってます。
2016.07.26 update
2016.07.25 update
2016.07.24 write
変数のセット
VAR=123 var="hogehoge" com=`date` array1=(111 222 333)
- cshと違い=の前後にスペースがあるとエラーになるので注意。
- 変数名の大文字小文字は区別する。
- cshと共通で`(バッククウォート)で囲めばコマンド展開される。
- '(シングルクォート)はそのまま、"(ダブルクォート)は変数展開がされる。
- 配列の参照方法 echo ${array[1]}
- 配列の要素数の参照 echo ${#array[*]}
- 数値の計算は expr コマンドか $(())を使う
使用例
i=1 i=`expr $i + 1` echo $i 2 i=1 i=$(( i + 1 )) echo $i 2
特殊な変数について
変数 | 効果 | 備考 |
---|---|---|
$? | 直前のステータスコードを返す | cshの$statusと同じ |
$$ | コマンド自身のPID | |
$# | 引数の数 | |
$@ | 全引数 | "で囲み展開するとそれぞれ個別要素として展開される |
$* | 全引数 | "で囲み展開するとすべてを一つの要素として展開される |
if
A="A" A2="A" if [ $A = $A2 ]; then echo "同じ" else echo "違う" fi
- if文では条件式に指定されたコマンドの終了ステータスを判定し分岐する 終了ステータスが0の場合に真となり、そうでない場合には偽となる
- if [ ] と書ける。if testと同じ意味。
- [ "hoge" -le "hoge" ]のように[]の間にスペースが必要(ないとエラー)
条件に使える記号は不等号ではなく特定の記号を使用する(忘れやすいので不等号と合わせて記載)
文字列と数値
記号 | 不等号 | 意味 |
---|---|---|
-eq | a = b | 等しければ真 |
-ne | a != b | 等しくなければ真 |
-lt | a < b | a が b より小さければ真 |
-le | a <= b | a が b 以下ならば真 |
-gt | a > b | a が b より大きければ真 |
-gr | a >= b | a が b 以上であれば真 |
ファイル関係の判定
記号 | 使い方 | 意味 |
---|---|---|
-nt | hoge_a -nt hoge_b | hoge_a が hoge_b より新しければ真 |
-ot | hoge_a -ot hoge_b | hoge_a が hoge_b より古ければ真 |
-d | -d hoge | hoge がディレクトリであれば真 |
-f | -f hoge | hoge がファイルであれば真 |
-e | -e hoge | hoge が存在すれば真 |
-s | -s hoge | hoge が0バイトでなければ真 |
-r | -r hoge | hoge が読み取り可能であれば真 |
-w | -w hoge | hoge が書き込み可能であれば真 |
-x | -x hoge | hoge が実行可能であれば真 |
複数条件
記号1 | 記号2 | 使い方 |
---|---|---|
-a | && | [ 条件 -a 条件 ] / [ 条件 && 条件 ] |
-o | || | [条件 -o 条件] / [ 条件 || 条件] |