Получить вывод команды; запустить другую команду, если содержит X
Я хочу написать скрипт bash, который:
- Запускает команду
bux
- а) Если на выходе
bux
содержитhave
, ничего не делать - б) Если на выходе
bux
содержитX
, запустите командуY
- в) Если выход
bux
содержитZ
, запустите командуA
- а) Если на выходе
- Он будет содержать только одну из этих вещей, а не несколько х
2 ответа
Решение
Вот скрипт, который должен делать то, что вы хотите (при условии, что bux, Y и A являются скриптами bash):
#!/bin/bash
OUTPUT=`source bux`
if [[ "$OUTPUT" =~ have ]]; then
:
elif [[ "$OUTPUT" =~ X ]]; then
source Y
elif [[ "$OUTPUT" =~ Z ]]; then
source A
fi
Если вы хотите вместо этого выполнять программы (при условии, что bux, Y и A находятся в пути):
#!/bin/bash
OUTPUT=`bux`
if [[ "$OUTPUT" =~ have ]]; then
:
elif [[ "$OUTPUT" =~ X ]]; then
Y
elif [[ "$OUTPUT" =~ Z ]]; then
A
fi
Шаблоны шара в case
утверждение как это:
case $(bux) in
*have*)
echo 'do nothing?'
;;
*X*)
Y
;;
*Z*)
A
;;
*)
echo 'default case.' # display an error ...?
;;
esac
Очевидно, что шаблоны могут быть более сложными, если хотите, но это, кажется, покрывает ваши требования.