/var/lgo/mudatisiki.log

人によってはムダ知識でも自分にとっては有用かもしれない情報を書き込みたいですね。Linuxを仕事で使っているので、それに関してが多いかもです。

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 条件] / [ 条件 || 条件]

Markdownバーティカルバーを入力するには&#124;を入力すればOK