14. 条件判断
- if
• bash的条件判断分为if语句 和 case语句:
1, if
if语句可以有如下格式:
if ... then ... fi
if ... then ... else ... fi
if ... then ... elif .... else ... fi
另外在每一个条件分支均可以嵌套if语句, 示例:
count=99
if [ $count -eq 100 ]; then
echo "Count is 100"
else
if [ $count -gt 100 ]; then
echo "Count is greater than 100"
else
echo "Count is less than 100"
fi
fi
15. 条件判断
- case
• case语句用于作多路分支判断, 格式如下:
case variable in
pattern1)
statements
;;
pattern2)
statements
;;
esac
需要注意两点:
1, variable与各个分支指定的字符串进行模式匹配; 如果分
支指定的是*)那么一定可以匹配成功.
2, 如果在某个分支匹配成功, 之后的分支不会被执行;
示例: demo9.sh
16. 循环
- for
• bash支持4中循环语法: for/while/until/select, 这里介
绍常用的for/while循环.
1, for
for循环的语法格式如下:
for variable in word_list
do
statements
done
示例:
for file in `ls`
do
echo $file
done
17. 循环
- while
2, while
while循环使用如下格式:
while ...
do
statements
done
示例:
declare -i a=1
while [ $a -ne 10 ]; do
echo $a
a=a+1
done
示例: demo10.sh
20. 文件globbing
• bash在解析用户输入的命令时, 如果输入的参数中带有*或者?字
符, 会对该参数进行文件名展开(file globbing); 如果存在匹配该模
式的文件则展开为所有这些匹配的文件名, 如果不存在使用原来
的字符串, 示例:
ls a* # No such file or directory
touch aa ab
ls a* # aa ab
• *&?
* 表示仸意多个字符
? 表示一个字符
注意: 如果需要在字符串中使用*, 则需要使用进行转义, 比如: ls
a*
• bash只会对未使用引号(包括单引号/双引号)的参数进行扩展, 如
果使用了引号则扩展不会发生. 示例: ls “a*”
• 示例: demo13.sh