.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>
あなたのスクリプトに。もう一度実行してみてください。