Получить вывод команды; запустить другую команду, если содержит X

Я хочу написать скрипт bash, который:

  1. Запускает команду 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

Очевидно, что шаблоны могут быть более сложными, если хотите, но это, кажется, покрывает ваши требования.

Другие вопросы по тегам