我在 .sh 中使用 for 循环时出现“意外标记 `do 附近的语法错误”错误。这是代码:
#!/bin/sh
# some code
for flux in $(ls -d /home/eai/*/*/*) ; do
FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
if [[ $FICHIER ]] ; then
# some code
fi
done
执行脚本的不同方式以及输出:
1) sh script.sh 或 bash script.sh
'cript_1409.sh: line 24: syntax error near unexpected token `do
'cript_1409.sh: line 24: `for flux in $(ls -d /home/eai/*/*/*); do
2)./script.sh
-bash: ./script_1409.sh: /bin/sh^M: bad interpreter: No such file or directory
我尝试过的:
1) 对循环使用不同的语法。
for flux in $(ls -d /home/eai/*/*/*) ; do
FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
if [[ $FICHIER ]] ; then
# some code
fi
) &
done
或者
for flux in $(ls -d /home/eai/*/*/*)
do
FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
if [[ $FICHIER ]] ; then
# some code
fi
done
2)将#!/bin/sh 更改为#!/bin/bash。
3)将扩展名.sh更改为.bash并重试上述所有执行命令。
答案1
您的脚本已DOS
编码并且sh
/bash
不喜欢这样。安装dos2unix
并运行
dos2unix <script>
在你的剧本上。并再次运行它。