|
|
TopPage > ShellScript |
Contents |
シェル名 | 1行目(CentOSの場合) |
Bシェル[Bourne Shell] | #!/bin/sh |
Cシェル[C shell] | #!/bin/csh |
baシェル[Bourne Again Shell] | #!/bin/bash |
abc=123 # 数値入力 def=xyzab # 文字列入力 ghij="xyzab" # 文字列入力 k='xyzab' # 文字列入力 lm= # 初期化.ヌル状態 nop123="" # 初期化.ヌル状態 qr_012=$abc # 変数の値を入力 |
abc=123 # abcに123を代入する abc:=123 # abcになにも代入されてなければ123を代入する abc-123 # abcに123を代入しないで右辺の値123を使用する abc:-123 # abcに123を代入しないで右辺の値123を使用する(上と同じ) abc?123 # abcになにも代入されていなければ123を表示する abc:?123 # abcになにも代入されていなければ123を表示する(上と同じ) abc+123 # abcになにか代入されていれば123を代入しないで右辺の値123を使用する abc:+123 # abcになにか代入されていれば123を代入しないで右辺の値123を使用する(上と同じ) |
特殊なシェル変数 | 内容 | ||
$0,$1,$2,,,$9 |
位置パラメータ。 $0は、コマンドそのもの。$1〜$9は、引数。引数が9個以上使いたい場合は、shiftを使う |
||
$* |
引数全てを示す。 引数全てを、1の文字列(数字列)として扱う $* $1 $2... "$*" "$1 $2..." |
||
$@ |
引数全てを示す。 引数全ては、別々の文字列(数字列)として扱う $@ $1 $2... "$@" "$1" "$2"... |
||
$# |
引数の数を示す
$ ./paranum.sh a b c d 4 |
||
$? |
コマンド終了ステータス。 バックグラウンドで実行させているコマンドには、無効 正常終了:0を返す、異常終了:0以外を返す
|
||
$$ | スクリプトを実行させているとき、そののスクリプトの自分自身のプロセスIDを示す | ||
$! |
スクリプト上でバックグラウンドで走らせているコマンドのプロセスID こんな感じで使用 command & .... wait $! # commandが終了するのを待つ |
||
$- |
setコマンドを使って設定したフラグの一覧を表示## コマンドラインより echo $- ## と入力すると himBH ## みたいに表示されh,i,m,B,Hのフラグが立っていることがわかる |
ワイルドカード例 | 内容 |
* | 全ての文字列(他のワイルドカードとあわせた場合文字がない場合も含む) |
? | 1文字のみ |
[a1b2c] | []内の文字であるa,b,c,1,2が含まれているもの |
[a-z] | []内の文字であるa〜zのどれかが含まれているもの |
[!a-z] | []内の文字であるa〜zのどれかが含まれていないもの |
??* | 2文字以上 |
[A-Z]* | 文字列の先頭にA〜Zの1文字が含まれているもの |
*[0-9] | 文字列の最後に0〜9の1文字が含まれているもの |
コマンドセパレータ | 読み | 内容 | 例 |
; | セミコロン | コマンドの区切り | cd ./; ls |
| | パイプ |
|の前のコマンドの出力結果を 後ろのコマンドに送る |
ls | sort |
& | アンパサンド | バックグラウンドで実行する | emacs & |
|| | OR演算子 |
||の前のコマンドの実行が失敗(false)の ときにのみ後ろのコマンドを実行する |
rm xxfile || echo "Can not delete file" |
&& | AND演算子 |
&&の前のコマンドの実行が成功(true)の ときにのみ後ろのコマンドを実行する |
mkdir xxxdir && mv aaaa.txt xxxdir |
if condition-command then command.... elif condition-command then command.... else command.... fi
if command;then command... elif condition-command;then command.... else command.... fi
case condition-string in srting1) command...;; srting2) command...;; .... esac
case string in condition-srting1) command.... ;; condition-srting2) command.... ;; .... ;; esac
for variable in word-list do command .... done
while condition-command do command .... done
数値比較の場合のオペランド | 内容 |
-eq | 左辺と右辺が等しい |
-ne | 左辺と右辺が等しくない |
-lt | 左辺が右辺より小さい |
-le | 左辺が右辺より小さいか等しい |
-gt | 左辺が右辺より大きい |
-ge | 左辺が右辺より大きいか等しい |
文字列判定の場合のオペランド | 内容 |
-n 文字列 | 文字列の長さが0より大きければ真 |
-z | 文字列の長さが0であれば真 |
文字列1 = 文字列2 | 文字列1と文字列2が等しければ真 |
文字列1 != 文字列2 | 文字列1と文字列2が等しくなければ真 |
数値 -l 文字列 | 数値が文字列の長さと等しければ真 |
umask 000 (-rw-rw-rw-を指定) umask 022 (-rwxr--r--を指定) |
exec > file_name while read LINE do ........ done |
for fl in *.$1 ## $1は、スクリプトの第1引数 do if [ -f $fl ]; then echo file exist ## 何か処理 else echo file not found. break fi done |
COUNT=0 while test $COUNT -lt 10 ##10回ループ do 処理...... COUNT=`expr $COUNT + 1` ## +の両端は、空白をいれるのを忘れないように done |
command > file_name 2>&1 |
command >& file_name |
TopPage > ShellScript |