Использовать собственную сборку 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
Проблема была проста. У меня был псевдоним grep
в моем bashrc
с флагом --color=always
:
alias grep="grep --color=always"
Решение состояло в том, чтобы просто удалить команду
unalias grep
и удалите псевдоним из .bashrc
, затем введите его ..bashrc
.