1 错误描述
在linux中写了一个很简单的脚本
#!/bin/bash
for((i=1;i<24;i++));do
echo $i;
done;
但是用sh 跑这个脚本的时候,会报错
2 错误分析
原因是目前的linux将先前默认的bash shell 更换成了dash shell。
其表现为 /bin/sh 链接到了/bin/dash而不是传统的/bin/bash。
所以在使用sh执行检测的时候实际使用的是dash,而dash不支持这种C语言格式的for循环写法。
3 解决方法
3.1 将默认shell更改为bash
bash支持C语言格式的for循环
在选择项中选No
sudo dpkg-reconfigure dash
3.2 直接使用bash检测
3.3 使用dash支持的for循环格式
为了确保shell脚本的可移植性,直接更改shell脚本,使用dash支持的for循环格式