我修复了下面的代码,因此可行:
#!/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 [
要阅读有关语法的更多信息
(注意,由于参数是由空格界定的,因此您的第二个变量和]
之间还需要有一个空间。测试使用]
用作终止的前哨)