sh
構文上有効なbashコードではないコードがあります(構文を放棄せずに)?
いくつかのコマンドsh
でオーバーライドしようとしています。bash
ベストアンサー1
ここにいくつかのコードがあります何か他のことをしなさいPOSIX shとBashでは:
hello &> world
これがあなたに「働かない」かどうかはわかりません。
バッシュでは標準出力と標準エラーリダイレクトでhello
ファイルを入力してくださいworld
。 POSIXでは、バックグラウンドで実行され、次にnullリダイレクトを実行してsh
それを切り捨てます(つまり、そのように処理されます)。hello
world
& >
Bash拡張が実行時に機能bash
し、純粋なPOSIXで異なる効果を持つ他の多くのケースがありますsh
。例えば、支柱の拡張BashのPOSIXモードでも実行される別のモードですが、そうではありません。
静的構文エラーの観点から、Bashには、[[
などのPOSIX指定されていない予約語があります。たとえば、これは有効なPOSIXシェルコードですが、Bash構文エラーとさまざまな履歴があります。time
[[ x
POSIXの非互換性エラーが原因で、この質問などの構文エラーが発生する可能性があります。:
x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file
単純な構文エラーは、重要な状況では「間違っている」という非常に危険な定義ですが、存在します。