GitHub

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

参考

source: ShellScript.hd
View on github | Report issue