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