学习笔记:
1、syntax error: Bad for loop variable
在ubuntu下跑一个测试脚本,提示for 循环的语法错误,查了一下,系统启动问题。
代码对于标准bash而言没有错,因为Ubuntu为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼。
解决方法是 取消dash
sudo dpkg-reconfigure dash
在选择项中选No,即可。
dash 好像是Debian的版本。
2、以下示例为一个错误的while循环,并由解决办法(while循环出错解决办法)
错误的代码如:
#!/bin/bash
s=0
i=0
while [ i != 100 ]
do
((i++))
s=$((i+s))
done
echo $s
正确的方法是:
#!/bin/bash
s=0
i=0
while (( i != 100 )) 或者 while ["i" -ne "100"]
do
((i++))
s=$((i+s))
done
echo $s
注意的地方如下:!!!!!
(( ))是用于计算一个算术表达式的值。 里面就可以直接用 !=了[ ] 和test, /usr/bin/test,/usr/bin/[一样,是等价命令;shell脚本中的变量赋值,=号两边不能有空格。
整数比较
-eq 等于 if [ "$a" -eq "$b" ]
-ne 不等于 if [ "$a" -ne "$b" ]
-gt 大于 if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt 小于 if [ "$a" -lt "$b" ]
< 小于(在双括号中使用) (("$a" < "$b"))
<= 小于等于(在双括号中使用) (("$a" <= "$b"))
> 大于(在双括号中使用) (("$a" > "$b"))
>= 大于等于(在双括号中使用) (("$a" >= "$b"))