вывод grep, перенаправленный в файл, создает двоичный файл

Использовать собственную сборку bash-в расширении параметров по умолчанию:

ipaddr="$(lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD123 | cut -d : -f3)"
echo "${ipaddr:-unknown}"

Во-первых, мы используем конструкцию подоболочки $( command )для захвата вывода commandи присваиваем его переменной. Поскольку рассматриваемая команда включает ваш cut, она будет правильно нулевой, как и ожидалось, в случае, если ваша команда не возвращает IP-адрес.

Затем мы используем конструкцию ${var:-default}, которая будет расширяться до предоставленного значения по умолчанию, если varне установлено или пусто.

Вы также можете, если вы собираетесь ссылаться на эту переменную более одного раза, использовать назначение по умолчанию, которое также установит значение этой переменной по умолчанию, если она не установлена ​​или пуста.:

$ echo "$foo"

$ echo "${foo:=bar}"
bar
$ echo "$foo"
bar

Или остановите свой скрипт и выдайте ошибку, если он не установлен или пуст:

$ echo "${bar:?bar is unset or empty}"
-bash: bar: bar is unset
$ echo $?
1
1
25.04.2020, 00:27
1 ответ

Проблема была проста. У меня был псевдоним grepв моем bashrcс флагом --color=always:

alias grep="grep --color=always"

Решение состояло в том, чтобы просто удалить команду

unalias grep

и удалите псевдоним из .bashrc, затем введите его ..bashrc.

2
19.03.2021, 02:26

Теги

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