2016-10-05 45 views
0

我應該將ENTER鍵值作爲shell輸入以避免shell等待用戶輸入。模擬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 

我已經知道'echo'隱式地有一個ENTER值,所以試圖在命令下面運行來完成我的要求。

echo | source ~/.bash_profile 

正如我所料,我可以看到OS提示符而不是看到Shell等待用戶輸入。 但是,我注意到導出TEST6變量的最後一行沒有被導出。我的意思是我找不到變量TEST6的值。

你能讓我知道我失蹤了嗎?

回答

1

該值正在由管道運行的子shell中導出。改用輸入重定向。

source ~/.bash_profile <<< "" 

任何字符串可以使用,因爲你似乎不關心使用的實際值,而是一個空字符串是什麼echo不帶參數產生的等價物。 (這裏的所有字符串都隱含以換行符結尾)。

如果您的shell不支持<<<,則可以使用POSIX標準here文檔。

. ~/some_file <<EOF 
EOF 
+0

它很好用。非常簡單的解決方案,這是我想找到的。非常感謝。 – Sigularity

+0

我使用了字符串'1'。作品。 – Sigularity

+0

順便說一句,「輸入重定向」在Solaris,HPUX和AIX等其他unix中起作用? – Sigularity

相關問題