linux - 在 Linux bash 中模拟 ENTER 键并一起导出另一个变量

标签 linux bash

我应该将 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 的值。

你能告诉我我错过了什么吗?

最佳答案

该值正在管道运行的子 shell 中导出。请改用输入重定向。

source ~/.bash_profile <<< ""

可以使用任何字符串,因为您似乎并不关心实际使用的值,但是空字符串相当于 echo没有参数产生。 (这里的所有字符串都隐含地以换行符结尾。)

如果你的 shell 不支持 <<< ,您可以改用 POSIX 标准的此处文档。

. ~/some_file <<EOF
EOF

关于linux - 在 Linux bash 中模拟 ENTER 键并一起导出另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877368/

相关文章:

linux - 如何在特定部分强制出现链接器错误

linux - 来自/dev/shm的内存是否可以缓存到CPU缓存中?

bash - 通过 bsub 提交时包括 bash 脚本参数

linux - SSL 问题并从 https 重定向到 http

linux - 从 Bash 中的目录获取文件名

c - 如何检测 shell 在 popen 调用后是否无法执行命令?不要与命令退出状态混淆

linux - 打开屏幕在bash文件中获取PID

c - 关于标准输出/标准错误重定向

bash - 在 bash 中循环元组?

Linux:删除不包含所有指定单词的文件