2016-10-05 9 views
0

シェルがユーザー入力を待つのを避けるために、ENTERキー値をシェル入力として入力する必要があります。ENTERキーをシミュレートし、Linuxで別の変数を一緒にエクスポートするbash

echo 'enter' 
read FRUIT 

case "$FRUIT" in 
    "apple") echo "Apple pie is quite tasty." 
    ;; 
    "banana") echo "I like banana nut bread." 
    ;; 
    "kiwi") echo "New Zealand is famous for kiwi." 
    ;; 
esac 

export TEST6=TEST 

私は私の要件を達成するために、コマンドの下に実行しようとした、「エコー」は、暗黙的に値を入力していることを学びました。

予想通り、シェルがユーザーの入力を待つのではなく、OSプロンプトが表示されます。 しかし、私はTEST6変数をエクスポートする最後の行がエクスポートされないことに気付きました。変数TEST6の値が見つからないということです。

私は行方不明をお知らせできますか?

答えて

1

値はパイプラインによって実行されるサブシェルでエクスポートされています。代わりに入力リダイレクトを使用してください。あなたが使用される実際の値を気にする表示されませんので、

source ~/.bash_profile <<< "" 

任意の文字列を、使用することができますが、空の文字列を引数なしでechoが生成するものと同等です。

シェルが<<<をサポートしていない場合は、代わりにPOSIX標準のこちらのドキュメントを使用することができます(ここではすべてが暗黙的に改行で終わります)。

. ~/some_file <<EOF 
EOF 
+0

素晴らしいです。非常に簡単な解決策と私が探していたものです。どうもありがとうございます。 – Sigularity

+0

私は文字列 '1'を使用しました。働く – Sigularity

+0

ちなみに、「入力リダイレクト」は、Solaris、HPUX、AIXなどの他のUnixでも動作しますか? – Sigularity

関連する問題