Используя подстановку команд, я не думаю, что это возможно.
Подстановка команды позволяет выводу команды заменить саму команду.
Так что то, что будет проверено в операторе if, будет выходом из функции (операторы echo).
Без операторов echo выходных данных нет, поэтому оператор if всегда оценивается как ложный.
Можно просто передать вызов функции в качестве аргументаif
. Обратите внимание, что выражение if оценивается как истинное, если return 0
, ложное, если return 1
. Я считаю, что это соглашение Linux - возвращение 0 указывает на успех, ненулевое указывает на состояние ошибки.
if MyFunction "$arg1" "$arg2; then
echo "Hello"
else
echo "Nothing"
fi
В MyFunction
возвращает 0. Или возвращает 1 и отрицает выражение таким образом:
if ! MyFunction "$arg1" "$arg2; then