5

Bash は、「エラー時に終了」環境フラグをコマンド置換シェルに渡していないようです。

(bash の戻り値の欠如を回避するために) 多数のコマンド置換を使用していますが、サブシェルで何かが失敗した場合は、スクリプト全体をダウンさせたいと考えています。

たとえば、次のようになります。

set -e    

function do_internet {
    curl not.valid.address
}

answer=$(do_internet)

スクリプトがそこで停止し、続行しないようにしたいと思います。(-e を設定することで、すべてに '|| die' を付ける必要がなくなることを願っていました。

私は何か間違ったことをしていますか?および/またはこれを回避する方法はありますか?

以下に少し例を示します。

#!/bin/bash

set -e

echo "You should only see this line, and not any other line."

function foo {
    false
    echo "The above line is false. Figure that one out, Plato."
}

bar=$(foo)

echo $bar

両方の行を印刷します。(使用GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu))

4

1 に答える 1