ローカル変数の割り当てで失敗したパイプが関数に失敗するようにするにはどうすればよいですか?

ローカル変数の割り当てで失敗したパイプが関数に失敗するようにするにはどうすればよいですか?

このコードは:

#!/bin/sh

set -euo pipefail # strict mode

fn() {
        local out=$(echo hello && false)
        echo "out=$out"
}

fn

パイプラインが失敗しても停止しませんecho hello && false。ただし、local削除すると停止します。バッシュを使用してください。

この変数がローカル変数であるという事実が、エラー処理に重要な理由は何ですか?執筆時にローカル変数の割り当てが失敗する方法は?

関連情報