Shellscript: значение Pmset в качестве переменной в сценарии else if - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь написать сценарий оболочки, который изменит режим гибернации с 3 на 25 и наоборот на Mac.Я пытаюсь установить результат команды "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

1 Ответ

0 голосов
/ 25 октября 2018

Хорошо, я понял это.Проблема заключалась в том, что вывод команды shell содержал TAB вместо SPACE.Я скопировал вывод команды прямо из Терминала.Рабочий шеллскрипт выглядит так, если кому-то это нужно:

#!/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
...