スクリプトのshebang "#!/bin/bash -o Pipelinefail"で無効なオプション名エラーが発生しました。

スクリプトのshebang "#!/bin/bash -o Pipelinefail"で無効なオプション名エラーが発生しました。

test.shというファイルがあります。

#!/bin/bash -o pipefail
echo "Running test"
git diff HEAD^ HEAD -M --summary |
grep delete | 
cut --delimiter=' ' -f 5

このスクリプトを実行しようとすると:

./test.sh

私は得る:

/bin/bash: line 0: /bin/bash: ./test: invalid option name

cat -v test.shキャリッジリターンのようなものがあるか走ってみましたが、ないようでした。ただ実行すると、スクリプトを実行できますbash test.sh。助けてくれてありがとう。追加情報を提供できる場合はお知らせください。

答え1

Linuxカーネルは、shebang行の最初の「単語」以降のすべてを処理します。単一パラメータとして。 1つの回避策はset -oスクリプトの後半にあります。

#!/bin/bash

set -o pipefail

echo "Running test"
git diff HEAD^ HEAD -M --summary | grep delete | cut --delimiter=' ' -f 5

関連情報