Bash, если на основе результата grep выдает ошибку «слишком много аргументов»?

Всегда есть подход "грубая сила и невежество".

  • Удаление неверных полей
  • Преобразование нескольких вкладок в одну
  • Удаление одной вкладки в начале строки
  • Удаление одной вкладки в конце строки

Это не умно, это не умно, но это работает.

В дальнейшем 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=
0
15.12.2016, 20:39
2 ответа
if upower -d | grep -qF BAT0 ; then
   echo "BAT0 PRESENT"
else
   echo "NO BAT0"
fi

if примет серию команд и работает над статусом последней, в данном случае grep. grep возвращает истину, если она совпадает, и ложь в противном случае.

3
28.01.2020, 02:26

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 .

0
28.01.2020, 02:26

Теги

Похожие вопросы