0

我正在尝试编写一个 shellscript,它将休眠模式从 3 更改为 25,反之亦然。我尝试将“pmset -g | grep hibernatemode”命令的结果设置为 OUTPUT 变量(根据电源给出“hibernatemode 3”或“hibernatemode 25”结果)并将 HIBERNATE 变量设置为“hibernatemode 3 ”。因此,如果变量 OUTPUT 和 HIBERNATE 匹配,我希望它执行一个命令,该命令将更改该系统设置,但现在我只希望它使用 echo 命令显示它正在使用的命令。问题是无论我做什么,无论 OUTPUT 的值是什么,我都会得到“hibernatemode 25”。我对此真的很陌生,所以我可能缺少一个非常基本的东西。谢谢您的帮助!

#!/bin/bash

OUTPUT="$(pmset -g | grep hibernatemode)"
HIBERNATE="hibernatemode 3"

echo $OUTPUT
echo $HIBERNATE

if [ $OUTPUT = $HIBERNATE ]
  then 
echo hibernatemode is 3
  else
echo hibernatemode is 25
fi
4

1 回答 1

0

好的,我想通了。问题是 shell 命令的输出有一个 TAB 而不是 SPACE。我直接从终端复制了运行命令的输出。如果有人需要,工作的 shellscript 看起来像这样:

#!/bin/bash

OUTPUT="$(pmset -g | grep hibernatemode)"
HIBERNATE3=" hibernatemode        3"
HIBERNATE25=" hibernatemode        25"

if [ "$OUTPUT" = "$HIBERNATE3" ]

 then 
  pmset -b hibernatemode 25
  echo Hibernatemode set to 25 - DISK

elif [ "$OUTPUT" = "$HIBERNATE25" ]

 then
  pmset -b hibernatemode 3
  echo Hibernatemode set to 3 - RAM

else
  echo Unsuccessful!

fi
于 2018-10-25T19:41:27.170 回答