sh shell code - получение результата команды - PullRequest
0 голосов
/ 26 мая 2010

Как я могу написать простой скрипт оболочки, который будет проверять, использует ли кто-то дисплей :0? Это не работает:

if [ 'who | grep " :0 "' != "" ]
then
    echo "hi"
fi

Ответы [ 3 ]

2 голосов
/ 28 мая 2010

Некоторые другие ответы работают, но нет необходимости записывать выходные данные grep (используя $ () или backtics) для сравнения строк, потому что состояние выхода grep будет указывать на успех или неудачу. Таким образом, вы можете уменьшить это до:

if who | grep -q ' :0 '; then
    echo hi
fi

Или даже проще:

who | grep -q ' :0 ' && echo hi

Примечания:

  • «if» работает с командой или конвейером команд.

  • Левая квадратная скобка на самом деле является командой, другое название для «test».

  • Опция q подавляет вывод grep (в большинстве версий).

  • Вместо того, чтобы вызывать who, grep и test, вы можете просто вызывать who и grep.

  • Как уже отмечалось в другом ответе, вам может потребоваться grep для чего-то, кроме ': 0', в зависимости от вашей системы.

0 голосов
/ 26 мая 2010
if who | grep " :0 "
then
    echo "hi"
fi

Обратите внимание, что вывод who различен для разных версий who . Для версии GNU coreutils 7.4 who вам нужно grep '(: 0' вместо grep ": 0"

0 голосов
/ 26 мая 2010
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
    echo "hi"
fi
...