这里写目录标题
1. if 判断
1.1 基本语法
- 单分支
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
fi
- 多分支
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
注意
:
- [ 条件判断式 ],中括号和条件判断式之间必须有空格
- if 后要有空格
1.2 案例实操
单分支
- 控制台测试
- 编写if测试脚本,
if [ $1 = root ]
then
echo "welcome user root"
fi
注意
:改代码我们没有为其添加参数,所以报错,为了使代码更具有健壮性,我们应该需要对if_test.sh
中的代码进行修改。
if [ "$1"x = "root"x ]
then
echo "welcome user root"
fi
if与逻辑与&&和或||的使用
注
:if 中如果想把两个判断语句放在一个中括号里面。逻辑与
&&(即and)要改成 -a
,逻辑或
||(即or)改成-o
。
多分支
修改if_test.sh
脚本
#!/bin/bash
if [ "$1"x = "root"x ]
then
echo "welcome user root"
fi
# 输入第二个参数,表示年龄,判断属于哪个时间段。
if [ $2 -lt 18 ]
then
echo "未成年人"
else
echo "成年人"
fi
#!/bin/bash
if [ "$1"x = "root"x ]
then
echo "welcome user root"
else
echo "welcome $1"
fi
# 输入第二个参数,表示年龄,判断属于哪个时间段。
if [ $2 -lt 18 ]
then
echo "未成年人"
elif [ $2 -gt 60 ]
then
echo "老年人"
else
echo "成年人"
fi
2. case 语句
2.1 基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意
:
- case 行尾必须为单词 “in”,每一个模式匹配必须以右括号 " )"结束。
- 双分号 ";;"表示命令序列结束,相当于 java 中的 break。
- 最后的“ *)”表示默认模式,相当于 java 中的 default。
2.2 案例实操
#!/bin/bash
case $1 in
1)
echo "one"
;;
2)
echo "two"
;;
3)
echo "three"
;;
*)
echo "number else"
;;
esac
3. for 循环
3.1 基本语法
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
for 变量 in 值 1 值 2 值 3…
do
程序
done
3.2 案例实操
#!/bin/bash
for(( i=1; i<=$1; i++ ))
do
sum=$[ $sum + $i ]
done
echo $sum
注
:双小括号 (())
中可以跟传统的运算符,例如:>,<,=,<=,>=
注
:{1…100}表示1~100的有限整数集合。
4. while 循环
4.1 基本语法
while [ 条件判断式 ]
do
程序
done
4.2 案例实操
echo "===========while循环============"
a=1
while [ $a -le $1 ]
do
# sum2=$[ $sum2 + $a ]
# a=$[ $a + 1 ]
let sum2+=a
let a++
# 注意let后面的运算操作不能呦空格
done
echo $sum2
5. read 读取控制台输入
4.1 基本语法
read (选项) (参数)
选项:
- -p:指定读取值时的提示符;
- -t:指定读取值时等待的时间(秒)
- 如果 -t 不加表示一直等待
- 如果加上,到指定秒后就不在等待。
参数变量:指定读取值的变量名
4.2 案例实操
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds:" name
echo "welcome $name"