Я пытаюсь уменьшить количество кода в сценарии. То, что я хочу сделать, это передавать результат команды на функцию, которая говорит мне, если команда передается или не удалась, а затем выходит, если она не удается.
Вот принимающая функция:
function SanityChk() {
if [ $1 != "0"]; then
echo "FAIL"
else
echo "PASS"
fi
}
Я знаю, что могу запустить команду, а затем просто пройти $? Назад ...
sudo cp test.txt test.dat
SanityCheck $?
Однако я хочу сделать это всего за одну строку. Я пытался использовать «Eval», чтобы это было что-то подобное:
SanityCheck eval$(sudo cp test.txt test.dat)
, но, похоже, что-то вернет, кроме результата.
Так что вопрос в том, как я могу получить выходной результат?
Просто назначьте состояние выхода в переменной:
some_command
status=$?
, тогда вы можете сделать то, что вы будете с $ Status
.
Можно просто передать команду и все аргументы:
SanityCheck () {
if "$@"; then
echo yes
else
echo no
fi
}
SanityCheck sudo cp test.txt test.dat
Или выполнить функцию сразу же после выполнения команды: $?
- это статус выхода последней команды
SanityCheck () {
if (($? == 0)); then
echo yes
else
echo no
fi
}
sudo cp test.txt test.dat
SanityCheck