shell脚本常用循环控制语句
1. for语句
1.1 for…do…done(固定循环)
for这种语法,是已经知道要进行几次循环的状态。
for语法:
for 变量名 in con1,con2,con3
do
程序段
done
$var 变量在循环工作时,取值分别为:con1,con2,con3
1.2 for…do…done的数值处理
语法:
for((初始值;限制值;执行步阶))
do
程序段
done
示例如下:
#!/bin/bash
read -p "please input a number,i will count for 1+2+……+your input:" num
交互式输入提示
sum=0
for ((i=1;i<=${num};i++))
do
sum=$((${sum} + $i))
done
echo "1+2+……+${num}=${sum}"
${a}表示变量a的值,不引起歧义的情况下可省略{}
2. while语句
语法:
while [condition]
do
程序段落
done
条件成立时执行,直到条件不成立时停止执行。
示例:
#!/bin/bash
read -p "please input a number" num
sum=0
i=0
while ((i<num))
do
((i++)) //let i+=1//i=$[$i+1]//i=$(($i+1))//i=`expr $i+1`
sum=$((${sum}+${i}))
done
echo "1+2+..+${num}=${sum}"
(())使用语法:
用来扩展shell中的算术运算比较和赋值运算。
1.在双括号中可进行逻辑运算,四则运算,可以a++等
2.所有变量前可以不加$
3.运算符和数值之间可以有空格,也可以没有空格,而使用[]时必须保证有空格。
4.内部支持多个表达式,用分号分开。如for((i=1;i<num;i++))
$()
与两个反点
用法:
做变量替换,可以将命令执行结果赋值给变量。
但``可在所有shell运行,$()不能在
[]和test
[]左右括号和其内部数值必须有空格
$(())
计算数学表达式的值
和`表达式`效果相同
3.if语句
3.1 单层,简单条件判断式
if [condition]
then
执行语句
fi
fi 结束if的意思
3.2 多重,复杂条件判断式
if [条件判断式]
then
条件成立时执行
else
条件不成立时执行
fi
多个条件判断
if [条件一]
then
条件一成立时执行
elif [条件二]
then
条件二成立时执行
else
条件一二均不成立时执行
fi
4. case esac语句
语法:
case $变量名 in
“第一个变量内容”)
程序段
;;
“第二个变量内容”)
程序段
;;
*)
程序段
;;
esac
示例:
#!/bin/bash
Choice()
{
read -p "plase input your choice:" choice
}
Choice
Case()
{
case $choice in
A)
echo "your choice is A"
exit 0
;;
B)
echo "your choice is B"
exit 0
;;
*)
echo "please input your choice A or B!"
Choice
Case
;;
esac
}
Case
如果需要给函数传递变量,则直接在函数名后空格加变量名。