たまにしか書かないのでいつも忘れてしまい、書く必要があるときになって毎度調べ直しているので、覚え書きとしてきちんとまとめてみます。
内容は非常に初歩的なことばかりです。
shebang
シェルスクリプトの先頭に書く宣言文。
どのシェルを利用して実行するかを指定する。
1  | 
変数
シェル変数
実行しているシェルの内部でのみ有効な変数。
1  | # 変数abcに123を代入する  | 
環境変数
シェルから実行されたコマンド内でも有効な変数。
1  | # 環境変数abcを設定する  | 
read コマンド
標準入力からデータを読み込む。
1  | # abc に標準出力からのデータを代入する  | 
引用符
1  | # 変数 abc に文字列 xyz をセットする  | 
引数
$0は実行コマンド名、$#は引数の数を表す。
args.sh
1  | 
  | 
実行結果
1  | $ ./args.sh aaa bbb  | 
エスケープシーケンス
行末にバックスラッシュをつけると、改行コードがエスケープされて文字列を途中で折り返すことができる。
1  | $ echo "Hi! \  | 
条件分岐
構文
1  | if [ condition1 ]; then  | 
演算子
文字列比較
| 演算子 | 比較内容 | 
|---|---|
a == b | 
a と b が等しければ真 | 
a != b | 
a と b が等しくなければ真 | 
数値比較
| 演算子 | 比較内容 | 
|---|---|
a -eq b | 
a と b が等しければ真 | 
a -ne b | 
a と b が等しくなければ真 | 
a -ge b | 
a が b 以上なら真 | 
a -le b | 
a が b 以下なら真 | 
a -gt b | 
a が b より大きいなら真 | 
a -lt b | 
a が b より小さいなら真 | 
ファイル属性の確認
パスがディレクトリであれば真
1  | if [ -d path ]; then ...  | 
test コマンドの書き方2通り
1  | if test 条件節; then ...  | 
ファイル属性を確認する演算子
| 演算子 | 内容 | 
|---|---|
-f ファイル名 | 
通常ファイルなら真 | 
-d ファイル名 | 
ディレクトリなら真 | 
-e ファイル名 | 
ファイルが存在すれば真 | 
-L ファイル名 | 
シンボリックリンクなら真 | 
-r ファイル名 | 
読み取り可能なら真 | 
-w ファイル名 | 
書き込み可能なら真 | 
-x ファイル名 | 
ファイルに実行権限があれば真 | 
-s ファイル名 | 
サイズが0より大きければ真 | 
