字符串比较中的 Bash glob

标签 bash if-statement

前几天,我正在努力处理 if 语句。原来我们的 my 变量在开头有一个空白。所以我试图用下面的代码来克服这个问题,但我没有运气。

if [ "$COMMAND_WAIT" == "*REBOOT" ]; then
sudo /etc/kca/scripts/reboot.sh
echo "REBOOTING"
fi

我应该能够通配这个声明还是有其他方法可以解决这个问题?

最佳答案

以下应该有效。它使用 [[ 而不是 [,并且 pattern 没有引号。

if [[ "$COMMAND_WAIT" == *REBOOT ]]; then
    sudo /etc/kca/scripts/reboot.sh
    echo "REBOOTING"
fi

[[ expression ]] 是一个复合表达式,具有关于扩展和引用的特殊规则。相反,[ 是内置命令,即 *REBOOT 将被扩展为路径名。在大多数情况下,使用 [[ 而不是 [ 更容易。

关于字符串比较中的 Bash glob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343390/

相关文章:

打印人类可读的 $PATH 输出的 Bash 命令在 OS X 上不作为 .bash_profile 中的别名工作

linux - bash 中多个单词作为可能的变量

python - 多次检查 "None"- Python 中的正确方法是什么

PHP:if($result = someFunction()) 是如何工作的?

linux - bash 中的字符串连接导致替换

linux - 客户端的可编写脚本的磁盘使用情况分割

Bash - 使用临时文件夹中的文件

linux - 关于 bash 中的基本命令(cp、cd、..)

sql - PostgreSQL if 查询?

python - 嵌套 if 条件和中断