我正在编写一个bash脚本,假设在循环中自动重启我的autofs。但是当我尝试运行它时,我只是出现语法错误。
#./dd_nfs.sh
./dd_nfs.sh: line 3: syntax error near unexpected token `/etc/init.d/autofs'
./dd_nfs.sh: line 3: `/etc/init.d/autofs reload'
# cat dd_nfs.sh
#!/bin/bash
for i in `seq 1 10`
/etc/init.d/autofs reload
sleep 5
echo "read test"
do time echo "read"
echo "read test done"
done
我尝试了dos2unix。我用'pwd'替换了第3行来打印我当前的目录,我试图去除/ r,但我仍然得到同样的错误。所以我不确定这里发生了什么。
有没有人见过这个? 感谢
答案 0 :(得分:2)
for
循环的语法错误。它需要do
关键字。
改变这个:
for i in `seq 1 10`
到此:
for i in `seq 1 10` ; do
或者,如果您愿意,可以这样写:
for in in `seq 1 10`
do
# body of loop
done
(另外,缩进代码会使阅读更容易。)
由于您正在使用bash,因此$(command)
语法比`command`
更易于阅读:
for i in $(seq 1 10) ; do
bash为简单范围提供了一种特殊的语法:
for i in {1..10} ; do
为了回应您的最新修改,您添加了这一行:
do time echo "read"
在循环体中。 do
关键字是该上下文中的语法错误。由于循环顶部缺少do
导致的语法错误,shell可能无法报告它。