shell 脚本条件判断
我们可以用 && 和 || 进行简单的条件判断,但是复杂场合并不适用,因此 shell 脚本提供了条件判断语句。
if 条件判断;then
//判断成立要做的事情
fi
if [ "$value" == "y" ] || [ "$value" == "Y" ]; then
echo "your input is y "
exit 0
fi
if [ "$value" == "n" ] || [ "$value" == "N" ]; then
echo "your input is n "
exit 0
fi
if 条件判断;then
//判断成立要做的事情
else
//判断不成立要做的事情
fi
if [ "$value" == "y" ] || [ "$value" == "Y" ]; then
echo "your input is y "
exit 0
else
echo "your input is $value "
exit 0
fi
if 条件判断;then
//判断成立要做的事情
elif 条件判断;then
//判断不成立要做的事情
else
fi
#!/bin/bash
read -p "please input (y/n):" value
if [ "$value" == "y" ] || [ "$value" == "Y" ]; then
echo "your input is y "
exit 0
elif [ "$value" == "n" ] || [ "$value" == "N" ]; then
echo "your input is n "
exit 0
else
echo "your input is error "
exit 0
fi
case $变量 in
“第1个变量内容”)
程序段
;;//表示该程序块结束 !
“第2个变量内容”)
程序段
;;
“第n个变量内容”)
程序段
;;
esac
我们发现,当输入的参数为 x 时,并没有显示 error ,因为通配符 * 使用错了,做如下修改;
#!/bin/bash
case $1 in
"a")
echo "param is a "
;;
"b")
echo "param is b "
;;
*)
echo "error "
;;
esac
shell 脚本函数
shell 脚本支持函数,而且可以自定义函数;
(function) 函数名() {
//函数代码段
}
function 可写可不写
#!/bin/bash
function help() {
echo "this is help cmd ! "
}
function close() {
echo "this is close cmd ! "
}
case $1 in
"-h")
help
;;
"-c")
close
;;
esac
shell 脚本函数也支持传参;
#!/bin/bash
function print() {
echo "param 1:$1 "
echo "param 2:$2 "
}
print a b
shell 脚本循环
shell脚本也支持循环,比如 while do done,until do done,for 循环;
while do done,表示当条件成立的时候就一直循环,直到条件不成立;
while [条件] //括号内的状态是判断式
do //循环开始
//循环代码段
done
#!/bin/bash
while [ "$value" != "close" ]
do
read -p "please input string:" value
done
echo "you input close -> stop "
until do done,表示条件不成立的时候循环,条件成立以后就不循环了
until [条件]
do
//循环代码段
done
#!/bin/bash
until [ "$value" == "close" ]
do
read -p "please input string:" value
done
echo "you input close -> stop "
for 循环有两种写法;
写法一:for 循环知道有循环次数写法
for var in con1 con2 con3……
do
//循环代码段
done
#!/bin/bash
for name in z zz zzz
do
echo " your name : $name "
done
echo " for stop "
写法二: for 循环数值处理写法
for(( 初始值;限制值;执行步长 ))
do
//循环代码段
done
#!/bin/bash
read -p "please input count num : " count
total=0
for((i=0; i<=count; i=i+1 ))
do
total=$(($total+$i));
done
echo " 1+2+3...+$count=$total "