ShellScript
/bin/shのシェルスクリプトについてのメモ
変数
var="asdf" echo $var
=の前後にスペースを入れてはいけない。
特殊な変数
$? 最後に実行したコマンドのexit値 $$ シェルのプロセスID $! シェルが最後に起動したバックグラウンドプロセスのプロセスID $- シェルの起動時のフラグ、setコマンドを使って設定したフラグの一覧 $0 スクリプト名 $1,$2,$3,... n番目の引数 ($1〜$9) $# 引数の個数(0〜) $* 全引数リスト。ダブルクォートで囲んだ場合、"$1 $2 … $n" と全引数を一つにくっつけた物に展開される。 $@ 全引数リスト。ダブルクォートで囲んだ場合、"$1" "$2" … "$n" とそれぞれの引数を個別にダブルクォートで囲んで展開する。
制御構造
if
#!/bin/sh if [ $1 = "-n" ]; then コマンド elif [ $1 = "-m" ]; then コマンド else コマンド fi
とか
条件文
testコマンド([])を使う。
-e file | ファイルが存在するか |
-d file | ディレクトリか |
-f file | 普通のファイルか |
-a | AND |
-o | OR |
=, != | 文字列の比較 |
-z 変数 | 空文字列か |
-n 変数 | 空でないか |
-eq, -ne | 数値の比較 |
-lt, -le, -ge, -gt | <, <=, >=, > |
for
for var in a b c d do echo $var done
とか
while
while 条件 do コマンド done
case
case 変数 in パターン) コマンド;; パターン) コマンド;; パターン) コマンド;; esac
View on github | Report issue