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

时间:2012-11-12 21:09:51

标签: 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

这是为了激活或禁用我的optimus卡。我在第4行得到错误:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

为:

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

它应该有用。

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

which [

你应该看到类似的东西:

/usr/bin/[

另外,man [可以阅读有关语法

的更多信息

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