たまにしか書かないのでいつも忘れてしまい、書く必要があるときになって毎度調べ直しているので、覚え書きとしてきちんとまとめてみます。
内容は非常に初歩的なことばかりです。
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より大きければ真 |