所以这是一个非常奇怪的错误。我已经在两次安装的GNU / Linux上测试了它,即Arch Linux和Linux Mint 17.1。我有一个正在处理的bash脚本,它以if语句开头。
if which apt-get &> /dev/null; then x="foo"
elif which yum &> /dev/null; then x="bar"
elif which pacman &> /dev/null; then x="baz"
它在我的Arch安装上运行正常(使用bash v4.3.33),但是在我的Mint安装(bash v4.3.11)上,它完成了if语句而没有发生意外,但在if语句之后出现了#sa; sa提示用户输入和bash立即从stdout打印(即使我非常确定我将其重定向到/ dev / null)。它看起来像:
Choose an option: /usr/bin/apt-get
其中"选择一个选项:"是我的提示。这不会发生在Arch上,当我将订单切换到
时if which pacman &> /dev/null; then x="foo"
elif which apt-get &> /dev/null; then x="bar"
我的提示停止出现后的尾随输出。
我在这里找不到什么东西?
答案 0 :(得分:1)
好吧,伙计们,我知道发生了什么事;这对我来说只是一个愚蠢的错误,但我非常感谢dg99和glenn jackman的帮助。
我注意到如果在图形文件管理器(Nemo)中执行,并选择了"在终端中运行,"奇怪的输出并没有发生。这促使通过终端进行了一些测试,我发现如果我使用./script
而不是sh script
执行脚本,问题就会自行解决。我不知道为什么会这样,但它很清楚地解决了这个问题。