スクリプトと出力を実行するさまざまな方法:

スクリプトと出力を実行するさまざまな方法:

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

あなたのスクリプトに。もう一度実行してみてください。

おすすめ記事