Получить значение хеша используя bash - PullRequest
1 голос
/ 15 июля 2010

Мне нужно получить значение PID из переменной (содержащей хэш-данные), используя BASH. eval ошибки из-за массива внутри него. Этот скрипт на iPhone.

eval "$(launchctl list com.3radicateRD)"

eval: line 10: syntax error near unexpected token `('
eval: line 10: `  "ProgramArguments" = ('
------------------------------------------------------
{
        "Label" = "com.3radicateRD";
        "LimitLoadToSessionType" = "System";
        "OnDemand" = false;
        "LastExitStatus" = 0;
        "PID" = 6810;
        "TimeOut" = 30;
        "ProgramArguments" = (
                "bash";
                "/var/mobile/Library/3radicateRD/3radicateRD";
        );
};

Ответы [ 2 ]

0 голосов
/ 15 июля 2010

Нет необходимости использовать eval. Просто выполните вашу программу как обычно.

launchctl list com.3radicateRD | awk '/PID/{print $3}'

Обновление: У меня нет iphone, так что я думаю, что есть Bash?

launchctl list com.3radicateRD | while read line
do
  case "$line" in 
   *PID* )
     set -- $line
     echo $3
  esac
done

А если у тебя есть седь,

launchctl list com.3radicateRD | sed '/PID/s/.*= //;s/;//'
0 голосов
/ 15 июля 2010

Я не знаю bash на IPhone (или launchctl в этом отношении). Но обычно вам нужно получить строку, содержащую "PID" = ..., удалить из нее кавычки, точки с запятой, пробелы и табуляции и передать результат в eval. Вы можете сделать это, используя grep и sed:

eval $(launchctl list com.3radicateRD | grep '"PID"' | sed 's/["; \t]//g')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...