2011年6月23日木曜日

shellのいろいろ基礎

常識かもしれないが、知らないと大変

変数とコマンド

#!/bin/bash
#変数に値を入れるとき=の前後スペースあってはならない
NAME="jacky"

#変数に値を入れるとき、$はいらない、変数を参照するときは$をつく
echo $NAME

#こういう書き方もあり
echo ${NAME}

#コマンドを使うときは`command`、または$(command)
echo `date "+%Y/%m/%d %H:%M:%S"` hello! $NAME


配列

#配列の一括定義
TODO=( lunch work milk walk )

#配列の個別定義
TODO[4]=5

#配列要素のfor..in..do
echo ${TODO[@]}
for o in ${TODO[@]}
do
echo $o
done


if文、case文、比較

#文字列の比較には、=の前後スペース無くてはならない
#また""を付けた方がいいです。unary operator expectedというエラーがでるので
if [ "${TODO[1]}" = "work" ]; then
echo "have to work"
elif [ "${TODO[1]}" = "play" ]; then
echo "can go play"
else
echo "have a rest"
fi

#数値の比較は=ではない
if [ ${TODO[4]} -gt 3 ]; then
echo "5 is greater then 3"
else
echo "unpossible"
fi

#ORなど論理計算
if [ "a" = "b" -o 1 -lt 2 ];
then
echo "ok"
else
echo "ng"
fi

#case文、第一引数
case $1 in
"help")
echo "help me!"
;;
"bye")
echo "byebye!"
;;
"")
echo "enter something!"
;;
*)
echo "anything else"
;;
esac


SQL実行

MYSQL_USER="user"
MYSQL_PASS="pass"
MYSQL_DB="test"
MYSQL_HOST="localhost"

#select * from...にすると、*がカレントディレクトリのファイル名になってしまうのでご注意
RUNME="select id,name from funds limit 10"
echo $RUNME|mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DB


実行後結果

# ./test.sh help
jacky
jacky
2011/06/23 10:59:48 hello! jacky
lunch work milk walk 5
lunch
work
milk
walk
5
have to work
5 is greater then 3
ok
help me!
id name
1 ?????????
2 ?????????
3 ?????????
4 ?????????
5 ?????????
6 ?????????
7 ?????????
8 ?????????
9 ?????????
10 ?????????

0 件のコメント:

コメントを投稿