Попробуйте этот код, я чувствую, он делает то, что вам нужно.
grep
в переменную OUTPUT
grep
статус выхода как логическое значение. Это 0 или 1, и это не подходит для вашей задачи. Вам нужно количество строк -0, 1, 2 и т.д. Поэтому посчитайте строки в переменной OUTPUT и подставьте это число во вторую переменную-line_count
. В результате мы получим две переменные. Первый с выводом grep, второй с количеством строк. line_count
в операторе case
и выполните необходимые действия.Использование:./switching_by_grep_result.sh your_file.txt
#!/bin/bash
# your code
OUTPUT=$(pfiles $1 2> /dev/null | grep name) # $1 Process Id
# count lines in the OUTPUT variable by using 'grep -c'
line_count=$(echo -n "$OUTPUT" | grep -c '^')
# checks lines count in here and invokes needed script or exit.
# if 0 lines - exit
# if 1 lines - invoke A
# if any other number of lines - invoke B
case $line_count in
0) echo 'exit'
;;
1) echo 'A() script invoking here'
;;
*) echo 'B() script invoking here'
;;
esac