###1st step
- confirm
echo$SHELL
#!/bin/bash
- 変数事始 echo "hello world" exit 0は、作法的なもので、異常終了していないことを明示する exit 0
s="hello"
echo $s これはsの値を表示する
echo "$s" これはsの値を表示する
echo "${s}" これはsの値を表示する
echo $s$s これはsの値を2回続けて表示する
echo $s $s これはsの値を2回続けて表示するが、間にスペースが入る
echo '$s' これは$sという文字列が表示される(シングルクォートは、変数を展開しない)
ここで注意するのはイコールの間にスペースを取らないこと
- 整数を扱う
x=10
echo $x
echo $x+2
-
整数の計算を行う
-
[ ` ` ] バッククォートは、その中の式を評価する
x = 10
echo `expr $x + 2`
#掛け算はバックスラッシュでエスケープする
echo `expr $x \* 2`
#カッコの中を先に計算させたい場合、パーレンをエスケープする
echo `expr \( $x + 5 \) \* 2`
- 配列を扱う、配列のindexは0番から始まる
a=(2 4 6 10)
echo $a
#添字を使うときにはカーリーブレースをつける
echo ${a[1]}
#aの要素を全て取得する
echo ${a[@]}
#aの要素数を取得する
echo ${#a[@]}
#配列の2番を10にする
a[2]=10
echo ${a[@]}
#配列に要素を加える
a+=(20 30)
echo ${a[@]}
- コマンドを実行したもの、これは下記の式を実行する方が分かりやすい
d=(`date`)
echo ${d[@]}
echo ${d[3]}
- 条件式の評価を行う test式
#正常終了ならば0
#数値の評価を行う
# $? は、直前に行われたコマンドの処理結果
test 1 -eq 1; echo $?
#####条件式の一覧
整数値を比較する条件式
command | means | mark |
---|---|---|
-eq | equal | = |
-ne | not equal | != |
-gt | greater than | > |
-ge | greater than equal | >= |
-lt | less than | < |
-le | less than equal | <= |
ファイルを比較する条式
command | words | means |
---|---|---|
-nt | newer than | 2つのファイルを比較して新しい方 |
-ot | older than | 2つのファイルを比較して古い方 |
-e | equal | 2つのファイルは等しい |
-d | directory(dir) | ディレクトリーかどうか |
- 以下の式はテストケースになる
test -e hello.sh; echo $?
test -d hello.sh; echo $?
- 論理式
-a and
-o or
- sample
x=40
if test $x -gt 60
then
echo "ok!!"
fi
- test式はブラケットで括ってもいい
if [ $x -gt 60 ]
then
echo "ok!!"
else
echo "soso..."
fi
- thenは下記書式でも実行される
x=40
if [ $x -gt 60 ]; then
echo "ok!!"
elif [ $x -gt 40 ]; then
echo "soso..."
else
echo "no way..."
fi
###case文
- sample
signal="red"
case $signal in
"red")
echo "stop"
;;
"yellow")
echo "caution"
;;
"green")
echo "go"
;;
*)
echo "..."
esac
###while文
- sample
i=0
while [ $i -lt 10 ]
do
i=`expr $i + 1`
echo $i
done
- ちょっと複雑なwhile文 3 の時に、一度スキップする。そして、iが10より大きくなったら終了
i=0
while :
do
i=`expr $i + 1`
if [ $i -eq 3 ]; then
continue
fi
if [ $i -gt 10 ]; then
break
fi
echo $i
done
###for文
- sample
for i in 1 2 3 4 5
do
echo $i
done
#####for文で配列を使う
- sample
a=(1 2 3 4 5)
for i in ${a[@]}
do
echo $i
done
#####for文でsequencialな整数値を使う場合
- sample
for i in `seq 1 100`
do
echo $i
done