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

これは、オプティマスカードをアクティブ化または無効化するために作成されました。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 [構文についてもっと読むために

](引数はスペースで区切られているため、2番目の変数と同様にスペースが必要です。テストでは]終了センチネルとして使用します)

于 2012-11-12T21:16:50.123 に答える