Bashスクリプトの同じ行で読み取り変数を評価します。

Bashスクリプトの同じ行で読み取り変数を評価します。

Bashスクリプトはこのコマンドで返された値を取得しようとしましたが、何も返さないようです。

rr=$(read -p Enter -r)

echo "Is $rr"
read -p "java archive detected, Enter Y to download it again, N to continue $nl" -r
if [[ $REPLY =~ ^[Yy]$ ]] && [[ $(read -p Enter -r) == "Y" ]]; then

        echo "Y entered $REPLY"
        break;

    elif [[  $REPLY =~ ^[Nn]$  ]]; then

        echo "java Archive was extracted successfully to $java8Dir $nl"

    fi

ベストアンサー1

これはread、コマンド置換($())内で実行されているためです。そうする必要はありません。ちょうど使用:

read -p Enter -r rr
echo "Is $rr"

このvar=$(command)構文は、の値をvarの戻り値に設定しますcommand。組み込み関数はread何も返さないので(終了状態は除外しますが、ここでは関係ありません)、変数は空です。構文は値を設定するreadことです。read VAR$VAR

おすすめ記事