gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:20 27 4
gpt4 key购买 nike

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

有没有人见过这个?谢谢

最佳答案

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 可能不会报告它。

关于linux - bash 脚本似乎无法执行 linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30130230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com