我应该将ENTER键值作为shell输入,以避免shell等待用户输入。
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
正如我所料,我可以看到操作系统提示,而不是看到Shell等待用户输入。 但是,我注意到导出TEST6变量的最后一行没有导出。我的意思是我找不到变量TEST6的值。
你能让我知道我错过了什么吗?
答案 0 :(得分:1)
该值正在由管道运行的子shell中导出。改为使用输入重定向。
source ~/.bash_profile <<< ""
可以使用任何字符串,因为您似乎并不关心实际使用的值,但空字符串相当于没有参数的echo
生成。 (所有这里的字符串都隐含地以换行符结尾。)
如果你的shell不支持<<<
,你可以在这里使用POSIX标准文件。
. ~/some_file <<EOF
EOF