Bash基础(二)
主要内容:
- 逻辑判断:test关键字
- 选择结构:if-else, case
- 循环结构:while-do, for
逻辑判断
bash不仅可以进行数值运算,通过test关键字还可以进行逻辑判断。
数值大小的判断
例如判断3是否大于2的大小:
1 | test 3 -gt 2; echo $? |
1 | 0 |
注意:判断成立,返回0,不成立返回1。
| 参数 | 含义 | 助记 |
|---|---|---|
| -gt | 大于 | greater than |
| -lt | 小于 | less than |
| -eq | 等于 | equal |
| -ne | 不等于 | not equal |
| -ge | 大于等于 | greater equal |
| -le | 小于等于 | less equal |
文本字符串的判断
例如判断两文本是否相等:
1 | test abc = abx; echo $? |
1 | 1 |
因为判断不成立,所以返回1。
另外注意:等号的两侧要有空格,否则就变成变量赋值了!
| 参数 | 含义 |
|---|---|
| = | 相等 |
| != | 不相等 |
| > | 字典顺序大于 |
| < | 字典顺序小于 |
文件的判断
例如判断文件是否存在:
1 | test -e a.out; echo $? |
| 参数 | 含义 | 助记 |
|---|---|---|
| -e | 文件存在 | exist |
| -r | 文件存在&可读 | readable |
| -w | 文件存在&可写 | writable |
| -x | 文件存在&可执行 | executable |
| -f | 文件存在&普通文件 | file |
| -c | 文件存在&字符型特殊文件 | char |
| -b | 文件存在&块型特殊文件 | block |
| -d | 文件存在&为目录 | directory |
选择结构
if-else
类比C语言中的if else-if else结构,注意结尾是fi,即if反过来写。
1 | if condition1 |
例如,demo_if.sh内容如下:
1 |
|
case
类比C语言中的switch-case结构,注意,break被;;取代,结尾是esac,即case反过来写。
1 | case 值 in |
例如,demo_case.sh代码如下:
1 |
|
注意:文本标签除了是一串具体的文本,还可以包含通配符,如;
| 通配符 | 含义 | 文本标签的例子 | 通过的条件文本 |
|---|---|---|---|
| ***** | 任意文本 | *) | Xyz, 123, … |
| ? | 任意一个字符 | a?c) | abc, axc, … |
| [] | 范围内一个字符 | [1-5] [b-d]) | 2b, 3d, … |
循环结构
while
类比C语言中的while-do结构,注意以done结尾。
例如demo_while.sh代码如下(注意符号+之前有一个空格!):
1 |
|
1 | 2019年 11月 11日 星期一 15:07:31 CST |
for
类比C语言中的for结构,注意也是以done结尾。
例如demo_for.sh代码如下:
1 |
|
该脚本的功能是查找本目录中以“log”开头的文件,并将其依次删除。
另外,结合seq关键字,可以控制循环次数,比如:
1 | seq 1 2 10 |
1 | 1 |
应用举例
- 高斯求和,计算1到100所有整数的加和:
1 |
|
1 | 5050 |
也可以用while-do结构:
1 |
|
- 计算1到100所有不被3整除的数的和,使用continue语句:
1 |
|
1 | 3367 |
-------------纸短情长 下次再见-------------
关注微信公众号,获取更多精彩~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 码农爱学习的博客!
评论







