流程控制用得最多的,无非也就是老三样,if、for、while。
if
其中 if 作为判断的函数使用,其中也是有很多小细节的。
例如你要判断两个值是否相等的时候,有两种方式,代码如下:
test=2
if ((${test}==2))
then
echo "yes"
fi
if [ ${test} -eq 2 ]
then
echo "yes"
fi
其实两段代码的效果是一样的,唯一不一样的是,书写规范不一样。
在括号的使用上遵循一下几个规则:
单括号:
- 单个 "[]" 中括号,那么里面是规定(posix)好的运算符与表达式的格式。括号中需要使用关系运算符、字符串运算符、逻辑运算符等,要求结果必须为 true 或者 false。
- 单个 "()" 圆括号里面内容的格式要求跟你正常使用 shell 命令是一样的,不能有多余的空格。括号中的内容会执行,要求返回 true 或者 false。意味着支持更多的表达式类型。
双括号:
如果是双括号,那么则是对单方括号的扩展,支持的运算符更多,但不同的 shell 之间可能产生兼容性的问题。如果需要跨发行版 / 平台使用,不建议使用这个方法。
方括号与圆括号的区别,目前仅发现格式要求不一样,圆括号不能有空格,二方括号有更严谨的空格要求。
for
而 for 的使用则跟大多数编程语言一样,只不过细节上有点差异罢了。
例如轮询出本文件夹下的所有内容的代码如下:
for file in `ls -a`
do
echo $file
done
这个代码相信大家接触过一些编程的应该都可以看懂。
当for循环没有条件的时候就会变成无限循环。
for (( ; ; )) ; echo yes
while
while 最适合用来处理需要一直执行下去的代码。
# while 不写条件的时候 默认为 while true
while :
do
echo 1
sleep 1
done
标签:shell,代码,echo,运算符,括号,while,编写,心得
From: https://www.cnblogs.com/NagaResst/p/17328918.html