Всегда есть подход "грубая сила и невежество".
Это не умно, это не умно, но это работает.
В дальнейшем TAB означает буквальный символ TAB
sed -e 's/[0-9]*_//g' -e 's/TABTAB/TAB/g' -e 's/^TAB//' -e 's/TAB$//'
например,
$ cat x
357M 2054_
357_ 154= 1900_
511_ 419X 1481_ 34=
$ sed -e 's/[0-9]*_//g' -e 's/ / /g' -e 's/^ //' -e 's/ $//' < x
357M
154=
419X 34=
if upower -d | grep -qF BAT0 ; then
echo "BAT0 PRESENT"
else
echo "NO BAT0"
fi
if
примет серию команд и работает над статусом последней, в данном случае grep. grep
возвращает истину, если она совпадает, и ложь в противном случае.
grep -F BAT0 / tmp / batstat
никоим образом УСЛОВНОЕ ВЫРАЖЕНИЕ (подробно описанное в подробном руководстве) для теста
, встроенного в bash
. Поскольку вывод grep
не используется, вероятно, будет достаточно параметра -q
и полагаться на код выхода.
grep -F -q BAT0 batstat
if [[ $? -eq 0 ]]; then
echo yea
else
echo nay
fi
Кроме того, / tmp / batstat
, вероятно, будет очень плохим выбором, особенно если доступ имеет гнусный локальный пользователь. Вместо этого рассмотрите возможность использования mktemp (1)
или не размещения файла в папке / tmp
.