На моей машине CentOS я написал сценарий, который сообщает мне, установлена ли служба или нет. Вот сценарийУдалить chkconfig заголовок с вывода
count=$(chkconfig --list | grep -c "$1")
if [ $count = 0 ]; then
echo "False"
else
echo "True"
fi
Проблема заключается в том, что вывод команды всегда включает в себя начальные строчки chkconfig
вывода. Например вот выход script.sh network
[[email protected] ~]# ./script.sh network
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
True
кажется, что переменная счетчик правильно содержит счетчик Grep вхождений но сценарий будет всегда выводится строки заголовка chkconfig, даже если я повторяю только «True» или «Ложное "в скрипте.
Почему это происходит? И как скрыть эти строки?
Perfect. Я тестировал это эквивалентное (но менее элегантное) решение, просто для удовольствия. 'chkconfig --list 2>/dev/null | grep -c "$ 1">/dev/null && echo "True" || echo «False» ' – gvdm
Да, это тоже прекрасно, хотя второй'>/dev/null' не нужен, потому что 'grep -c' вряд ли вернет какой-либо stderr на такой канал. – fedorqui
Я положил '>/dev/null', потому что' grep -c '$ 1 "' будет выводить количество вхождений в противном случае – gvdm