1

我修复了下面的代码,使其工作:

#!/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

这是为了激活或禁用我的 Optimus 卡。第 4 行出现错误:

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

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

4

1 回答 1

4

[您需要确保括号/]和实际变量之间至少有 1 个空格;即:更改您的代码

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

至:

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

它应该工作。

原因是这[实际上是 bash 中的“测试”命令。试试你的提示:

which [

你应该看到类似的东西:

/usr/bin/[

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

(注意,由于参数由空格分隔,因此您的第二个变量之间也需要有一个空格]。测试]用作终止标记)

于 2012-11-12T21:16:50.123 回答