Как пройти результаты выхода к функции

Я пытаюсь уменьшить количество кода в сценарии. То, что я хочу сделать, это передавать результат команды на функцию, которая говорит мне, если команда передается или не удалась, а затем выходит, если она не удается.

Вот принимающая функция:

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)

, но, похоже, что-то вернет, кроме результата.

Так что вопрос в том, как я могу получить выходной результат?

1
задан 12 March 2021 в 23:06

2 ответа

Просто назначьте состояние выхода в переменной:

some_command
status=$?
  

, тогда вы можете сделать то, что вы будете с $ Status .

0
ответ дан 18 March 2021 в 23:26

Можно просто передать команду и все аргументы:

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 
2
ответ дан 18 March 2021 в 23:26

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

Похожие вопросы: