linux - 第一个 "if-then"语句不会在 Mint 上将标准输出重定向到/dev/null

标签 linux bash if-statement stdout linux-mint

所以这是一个非常奇怪的错误。我已经在两个 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 语句之后有一个提示用户input 和 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"

我的提示停止出现后的尾随输出。

我在这里遗漏了什么吗?

最佳答案

好的伙计们,我知道发生了什么;这只是我的一个愚蠢错误,但我真的很感谢 dg99 和格伦 jack 曼的帮助。

我注意到,如果在图形文件管理器 (Nemo) 中执行,并选择“在终端中运行”,则不会出现奇怪的输出。这促使通过终端进行一些测试,我发现如果我使用 ./script 而不是 sh script 执行脚本,问题会自行解决。我真的不知道为什么会这样,但它非常干净地解决了这个问题。

关于linux - 第一个 "if-then"语句不会在 Mint 上将标准输出重定向到/dev/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28461250/

相关文章:

git - Bash 脚本打印到程序提示符

java - 完美数字 1 到 n

linux - 检查变量值是否存在的条件

Bash:拒绝目录的重命名访问

bash - 在 bash 中运行 sqlite3 脚本

python - 我可以在 Python 中收到始终评估为 true 的警告吗?

php - 我无法让我的 PHP "else"条件 block 工作

c - listen() 积压上限

c - 在 Linux 上用 C 流式传输音频文件

c++ - 如何将 (*sa_handler)(int) 指针设置为类成员函数? (非静态成员函数的无效使用)