如果不是或使用两个命令进行 Bash

标签 bash shell if-statement command pipe

我想检查两个程序是否存在。

if ! [ type gedit ] || ! [ type vim ]; then
    echo "Installing programs"
    #code
fi

#code needs to run when one of them is missing.

真正的方法是什么?

最佳答案

if ! type gedit vim &>/dev/null; then
    echo "Installing programs"
    #code
fi

测试命令[的目的是根据某些条件设置退出状态,例如文件存在或两个字符串相等。这里不需要这样做,因为 type 本身就设置了有用的退出状态。

另请注意,您可以指定多个名称作为 type 的参数。仅当找到所有名称时,它才会返回零退出状态。

&>/dev/null 操作系统的目的是将所有类型的输出(stdout 和 stderr)发送到 /dev/null。如果您确实想查看其输出,请删除该重定向。

关于如果不是或使用两个命令进行 Bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458385/

相关文章:

java - 我需要一种更好的方法来减少代码行,其中有很多 if 语句和条件调用方法

java - 使用 BufferedReader 检测用户的特定输入

bash - Bash的版本? —在Docker的构建上下文中

linux - 根据文本文件中的部分名称将文件复制或移动到另一个目录

linux - 如何将 grep 的输出通过管道传输到 cp?

python - 启动自己的终端工具作为命令的参数

linux - Cacti 通过自定义脚本扩展 snmp

linux - 强制 Base 10 在 BASH 中工作不正常

shell - zsh `getopts` OPTIND 行为与其他 shell(bash、sh)不一致

java - 为什么两个相等的字符串不匹配?