Skip to content

Instantly share code, notes, and snippets.

@geojackass
Last active August 29, 2015 13:58
Show Gist options
  • Save geojackass/9957173 to your computer and use it in GitHub Desktop.
Save geojackass/9957173 to your computer and use it in GitHub Desktop.

###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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment