前几天,我正在努力处理 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/