这两天开发功能,新接触Shell脚本,总结填埋的几个坑。
一、分支语句if判断的写法
#!/bin/ksh
if [ "$1" -eq "a" ]
then
echo "参数1输入为a"
elif [ "$1" -eq "b" ]
then
echo "参数1输入为a"
else
echo "参数1为其他"
fi
二、分支语句case条件语句写法
#!/bin/ksh
case $# in
1)
echo "传入1个参数"
;;
2)
echo "传入2个参数"
;;
3)
echo "传入3个参数"
;;
*)
echo "传入其余个数参数"
;;
esac
注:无需写break,只会进入符合条件的分支,不会全部执行
三、整理调用传入参数(未知个数)解决方案
如输入命令: test.sh -t tablename -c colname -d value
#!/bin/ksh
TAB_NAME=
COL_NAME=
COL_VALUE=
for i in $@ # $@为所有传入参数数组
do
case $1 in # 传入第一各参数
"-t")
shift1 # 数组左移一位,即数组第二位移至第一位
TAB_NAME=$1
shift1
;;
"-c")
shift1
COL_NAME=$1
shift1
;;
"-d")
shift1
# 判断如果列名对应值不为数字跳出循环
COL_VALUE=`echo $1|awk '/^[0-9]+$/'`
if [ -z "$COL_VALUE" ] # 如果不符合条件为1
then
echo "请输入数字"
exit $File
fi
shift1
;;
esac
done