执行脚本的不同方式以及输出:

执行脚本的不同方式以及输出:

我在 .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>

在你的剧本上。并再次运行它。

相关内容