我修改了下面的代码以便它可以工作:
#!/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变量。为什么呢?
答案 0 :(得分:3)
您需要确保括号[
/ ]
与实际变量之间至少有1个空格;即:改变您的代码
if ["$out" == "$is"];
为:
if [ "$out" == "$is" ];
它应该有用。
原因是[
实际上是bash中的“test”命令。试试你的提示:
which [
你应该看到类似的东西:
/usr/bin/[
另外,man [
可以阅读有关语法
(注意,由于参数是由空格分隔的,因此第二个变量和]
之间也需要有一个空格。测试使用]
作为终止标记)