POSIXは、ネストされたポイントが失敗したときにスクリプトを続行するかどうかを指定しますか?

POSIXは、ネストされたポイントが失敗したときにスクリプトを続行するかどうかを指定しますか?

たとえば、example.sh次のような場合

. non-existing.sh
echo 'continues!'

その後、インタラクティブセッションからスクリプトをインポートし、. ./example.sh端末に「続き!」と表示されたらどうなりますか?これ基準指定する

読み取り可能なファイルがないと、非対話型シェルは中断されます。対話型シェルは標準エラーに診断メッセージを記録する必要がありますが、この場合は構文エラーと見なすべきではありません。

セッションを続行する必要があるかどうかはわかりますが、入れ子になったソース. non-existing.shにどのように適用されるかはわかりません。 Bashはエラーメッセージを印刷しても実行されます(使用されていてもset -o posix)。 Dashは現在のスクリプトを中断します(example.sh)。これがBashがPOSIXと互換性がないのか、それともPOSIX(実装定義の動作)に指定されていないのか疑問に思います。

ベストアンサー1

読み取り可能なファイルがないと、非対話型シェルは中断されます

それ以外の場合は、[非対話型の場合]最後に実行されたコマンドの値を返します。https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#dot

2行目の引用符は、前のコマンドの終了コードが無視されることを示します。しかし、シェルをエラー終了モードに設定したいと思います。まあ、それをする必要があります。

おすすめ記事