Передайте замененную команду для работы в сценарии оболочкиLinux

Anonymous
Передайте замененную команду для работы в сценарии оболочки

Сообщение Anonymous »


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

Я написал этот скрипт для тестирования:

#!/bin/sh # также протестировано с /bin/bash на Ubuntu 22.04 с тем же результатом. # код выхода 1, результат pass_stituted_command() { результат=$($1) эхо "$?" echo "результат: $result" } pass_stituted_command "$(echo false)" # код выхода 0, результат pass_stituted_command() { результат=$($1) эхо "$?" echo "результат: $result" } pass_stituted_command "$(false)" # код выхода 0, результат ложный pass_stituted_command() { результат = 1 доллар эхо "$?" echo "результат: $result" } pass_stituted_command "$(echo false)" # код выхода 0, результат pass_stituted_command() { результат = 1 доллар эхо "$?" echo "результат: $result" } pass_stituted_command "$(false)" # код выхода 0, результат pass_stituted_command() { результат=$($1) эхо "$?" echo "результат: $result" } pass_stituted_command "$(echo 'test'; echo false)" # код выхода 0, результат проверки\nfalse pass_stituted_command() { результат = 1 доллар эхо "$?" echo "результат: $result" } pass_stituted_command "$(echo 'test'; echo false)" Из ответа в этом посте SO я ожидаю, что все примеры, кроме двух последних, будут вести себя как первый. Для последних двух я ожидаю, что код выхода будет равен 1, и каждый результат будет проверен.

Может ли кто-нибудь объяснить, почему это не так и как этого добиться? Спасибо!

Вернуться в «Linux»