Bash 脚本字符串比较错误,无法弄清楚



我修复了下面的代码,因此可行:

#!/bin/bash
out="$(cat /proc/acpi/bbswitch)"
if [[ "$out" == *OFF* ]];
then
    tee /proc/acpi/bbswitch <<<ON
    echo "Nvidia card activated."
else
    tee /proc/acpi/bbswitch <<<OFF
    echo "Nvidia card disabled."
fi

这是用于激活或禁用我的擎天库卡的。我在第4行上遇到了一个错误:

./.bb: line 4: [0000:01:00.0 OFF: command not found
OFF
Nvidia card disabled.

我可以从中读到它试图执行$ out变量。为什么?

您需要确保支架[/]与实际变量之间至少有1个空间;即:从

更改您的代码
if ["$out" == "$is"];

to:

if [ "$out" == "$is" ];

它应该起作用。

原因是[实际上是BASH中的"测试"命令。尝试您的提示:

which [

您应该看到类似的东西:

/usr/bin/[

另外, man [要阅读有关语法的更多信息

(注意,由于参数是由空格界定的,因此您的第二个变量和]之间还需要有一个空间。测试使用]用作终止的前哨)

相关内容

  • 没有找到相关文章

最新更新