bash脚本似乎无法执行linux命令

时间:2015-05-08 18:09:41

标签: linux bash

我正在编写一个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,但我仍然得到同样的错误。所以我不确定这里发生了什么。

有没有人见过这个? 感谢

1 个答案:

答案 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可能无法报告它。