echo $num
}
{ }用于在当前 shell 运行命令并且判断运行结果。
# 格式
if { } {
}
# 样例
if {grep sd1 /etc/fstab} {
echo good
}
( )用于在子 shell 运行命令并且判断运行结果,用法和{}类似,不再举例。
# 格式
if ( ) {
}
这几种括号可以一起使用,这样可以同时判断字符串、数值、文件、命令结果等等。最好不要混合使用&&||,会导致可读性变差和容易出错。
# 格式
if [[ ]] && (( )) && { } {
}
循环语句
# 格式
while [[ ]] {
break/continue
}
和if一样,这里的[[ ]]可以替换成其他几种括号,功能也是一样的,不再依次举例。break用于结束循环,continue用于直接进入下一次循环。所有的循环语句中都可以使用break和continue,下边不再赘述。
# 样例 死循环
while (( 1 )) {
echo good
}
until和while相反,不满足条件时运行,一旦满足则停止,其他的用法和while相同,不再举例。
# 格式
until [[ ]] {
}
for循环主要用于枚举,这里的括号是for的特有用法,不是在子 shell 执行。括号内是字符串(可放多个,空格隔开)、数组(可放多个)或者哈希表(可放多个,哈希表是枚举值而不是键)。i是用于枚举内容的变量名,变量名随意。
# 格式
for i ( ) {
}
# 样例
for i (aa bb cc) {
echo $i
}
# 枚举当前目录的 txt 文件
for i (*.txt) {
echo $i
}
# 枚举数组
array=(aa bb cc)
for i ($array) {
echo $i
}
经典的 c 风格 for 循环。
# 格式
for (( ; ; )) {
}
# 样例
for ((i=0; i < 10; i++)) {
echo $i
}
这个样例只是举例,实际上多数情况不需要使用这种for循环,可以这样。
# 样例,{1..10} 可以生成一个 1 到 10 的数组
for i ({1..10}) {
echo $i
}
repeat语句用于循环固定次数,n是一个整数或者内容为整数的变量。
# 格式
repeat n {
}
# 样例
repeat 5 {
echo good
}
分支语句
分支逻辑用if也可以实现,但case更适合这种场景,并且功能更强大。
# 格式 + 样例
case $i {
(a)
echo 1
;;
(b)
echo 2
# 继续执行下一个
;&
(c)
echo 3
# 继续向下匹配
;|
(c)
echo 33
;;
(d)
echo 4
;;
(*)
echo other
;;
}
;;代表结束 case 语句,;&代表继续执行紧接着的下一个匹配的语句(不再进行匹配),;|代表继续往下匹配看是否有满足条件的分支。
用户输入选择语句
select语句是用于根据用户的选择决定分支的语句,语法和for语句差不多,如果不break,会循环让用户选择。
# 格式
select i ( ) {
}
# 样例
select i (aa bb cc) {
echo $i
}
输出是这样的。
1) aa 2) bb 3) cc
?#
按上边的数字加回车来选择。
异常处理语句
# 格式
{
语句 1
} always {
语句 2
}
如果语句 1 执行出错,则执行语句 2。
简化的条件语句
if语句的简化版,在只有一个分支的情况下更简洁,功能和if语句类似,不赘述。
格式:
[[ ]] || {
}
[[ ]] && {
}
最好不要连续混合使用&&||,比如。
aa && bb || cc && dd
容易导致逻辑错误或者误解,可以用{ }把语句包含起来。
aa && { bb || { cc && dd } }
比较复杂的判断还是用if可读写更好,&&||通常只适用于简单的场景。
总结
本篇简单介绍了变量和语句的使用方法。变量部分只涉及了最基础常用的部分,后续文章会详细介绍。语句部分已经覆盖了所有需要使用的语句,实际上这些语句都不只有这一种语法,但本系列文章统一使用这个语法。但涉及到的几种括号的用法比较复杂,之后的文章也会详细介绍。
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!