linux shell script
シェルスクリプトを操作していきます。
[vagrant@localhost shell]$ echo $SHELL /bin/bash [vagrant@localhost shell]$ vi hello.sh
vimを使って、hello.shを書き込みます。正常終了でexit 0とします。コメントは#を使います。
#!/bin/bash echo "hello world" exit 0
実行権限を与えます。
[vagrant@localhost shell]$ chmod +x hello.sh [vagrant@localhost shell]$ ./hello.sh hello world
変数
#!/bin/bash s="hello" echo $s$s exit 0
数値演算はバッククォート`(shift + @)expr `で処理します。
#!/bin/bash x=10 echo `expr $x + 2` exit 0
掛け算は、\でエスケープが必要です。()も\( $x + 5 \)と\のエスケープが必要です。
echo `expr $x \* 2`
配列は添え字を使います。全ての要素は@を使います。
a=(2 4 6) echo ${a[2]} echo ${a[@]} echo ${#a[@]} exit 0
代入、要素の追加
a[2] = 10 a+=(20, 30)
-eqで正しいか否かの条件分岐を行っています。0は正常、1は不正となります。
-eq, -ne, -gt, -ge, -lt, -le、=, !=, -nt, -ot, -e, -dなどのコマンドがあります。
#!/bin/bash test 1 -eq 2; echo $?
test -e new.sh; echo $?
論理演算子には、-a(and),-o(or),!などあります。
ifの条件分岐
#!/bin/bash x=70 if test $x -gt 60 then echo "ok!" fi
x=70 if [ $x -gt 60 ]; then echo "ok!" else echo "soso.." fi
case条件分岐
signal="red" case $signal in "red") echo "stop!" ;; "yellow") echo "caution" ;; "green") echo "go!" ;; *) echo "...." ;; esac
while文
i=0 while [ $i -lt 10 ] do i=`expr $i + 1` echo $i done
for文: `seq 1 100`
a=(1 2 3 4 5) for i in ${a[@]} do echo $i done
コマンド引数を使うと柔軟にプログラムを書けるようになります。
ユーザからの入力を受け付ける。
while : do read key echo "you pressed $key" if [ $key = "end" ]; then break fi done
ファイルの読み込み
i=1 while read line do echo "$i: $line" i=`expr $i + 1` done <$1
関数
function hello(){ echo "hello" } hello