串行执行程序 && ||
- command1 ; commond2 执行完1在执行2
- commond1 && commond2 如果cmd1执行成功($?=0),则开始执行cmd2,如果cmd1执行错误($?=1),则不执行cmd2
- cmd1 || cmd2 如果cmd1执行错误($?=1),才执行cmd2 ,否则不执行cmd2
test命令
在11.15课程总结部分已经给出,这里就不再赘述。
exit()命令
exit 退出当前shell
Linux exit命令用于退出目前的shell。
执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。
0 执行成功
1 执行失败
$? 参照上一个状态值
linux脚本: if语句
if [expression] then;
comd
elif [expression] then ;
commd
else
commd
fi
if和then写在同一行时,需要分号分隔。分号是 Bash 的命令分隔符。它们也可以写成两行,这时不需要分号。
Bash 还提供了((...))作为算术条件,进行算术运算的判断。
if ((3 > 2)); then
echo "true"
fi
case结构
case结构用于多值判断,可以为每个值指定对应的命令,跟包含多个elif的if结构等价,但是语义更好。它的语法如下。
case expression in
pattern1 )
commands ;;
pattern2 )
commands ;;
pattern3 )
commands ;;
*)
commands ;;
最后一条匹配语句的模式是*,这个通配符可以匹配其他字符和没有输入字符的情况,类似if的else部分
...
esac
例子:
echo -n "输入一个1到3之间的数字(包含两端)> "
read character
case $character in
1 ) echo 1
;;
2 ) echo 2
;;
3 ) echo 3
;;
* ) echo 输入不符合要求
esac
while 循环
while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。
while condition; do
commands
done
上面代码中,只要满足条件condition,就会执行命令commands。然后,再次判断是否满足条件condition,只要满足,就会一直执行下去。只有不满足条件,才会退出循环。
循环条件condition可以使用test命令,跟if结构的判断条件写法一致。
while true
do
echo 'Hi, while looping ...';
done
for 循环
for…in 循环
for…in循环用于遍历列表的每一项。
for variable in list
do
commands
done
上面语法中,for循环会依次从list列表中取出一项,作为变量variable,然后在循环体中进行处理。
关键词do可以跟for写在同一行,两者使用分号分隔。
for i in word1 word2 word3; do
echo $i
done
for循环还支持 C 语言的循环语法。
for (( expression1; expression2; expression3 )); do
commands
done
break,continue
Bash 提供了两个内部命令break和continue,用来在循环内部跳出循环。
break命令立即终止循环,程序继续执行循环块之后的语句,即不再执行剩下的循环。
select 结构
select结构主要用来生成简单的菜单。它的语法与for…in循环基本一致。
select name
[in list]
do commands done
Bash 会对select依次进行下面的处理。
select生成一个菜单,内容是列表list的每一项,并且每一项前面还有一个数字编号。
Bash 提示用户选择一项,输入它的编号。
用户输入以后,Bash 会将该项的内容存在变量name,该项的编号存入环境变量REPLY。如果用户没有输入,就按回车键,Bash 会重新输出菜单,让用户选择。
执行命令体commands。
执行结束后,回到第一步,重复这个过程。
let 命令
let命令声明变量时,可以直接执行算术表达式。
$ let foo=1+2
$ echo $foo
3
上面例子中,let命令可以直接计算1 + 2。
let命令的参数表达式如果包含空格,就需要使用引号。
$ let "foo = 1 + 2"
let可以同时对多个变量赋值,赋值表达式之间使用空格分隔。
$ let "v1 = 1" "v2 = v1++"
$ echo $v1,$v2
2,1
上面例子中,let声明了两个变量v1和v2,其中v2等于v1++,表示先返回v1的值,然后v1自增。
expr 计算器
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
expr 表达式
表达式说明:
用空格隔开每个项;
用反斜杠 \ 放在 shell 特定的字符前面; "\*"
对包含空格和其他特殊字符的字符串要用引号括起来
> expr 14 % 9
5
> expr 10 + 10
20
> expr 1000 + 900
1900
> expr 30 / 3 / 2
5
> expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
90
> expr 30 * 3
expr: Syntax error
$[] 计算
Shell $[] 的用法如下:
$[表达式]
$[5+3]
$[] 会对表达式进行计算,并取得计算结果。如果表达式中包含了变量,那么你可以加$,也可以不加。
bc 命令
bc是任意精度计算器语言,通常在linux下当计算器用。
它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
常用的运算:
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 余数
实例:
通过管道符
$ echo "15+5" | bc
20
$ echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30
$ echo "10^10" | bc
10000000000
$ echo "sqrt(100)" | bc
10