Передайте замененную команду для работы в сценарии оболочки ⇐ Linux
Передайте замененную команду для работы в сценарии оболочки
Я пытаюсь передать общую функцию другой функции в качестве замещающей команды. Однако я не понимаю деталей оценки и того, когда возвращается и используется код выхода или стандартный вывод.
Я написал этот скрипт для тестирования:
#!/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, и каждый результат будет проверен.
Может ли кто-нибудь объяснить, почему это не так и как этого добиться? Спасибо!
Я пытаюсь передать общую функцию другой функции в качестве замещающей команды. Однако я не понимаю деталей оценки и того, когда возвращается и используется код выхода или стандартный вывод.
Я написал этот скрипт для тестирования:
#!/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, и каждый результат будет проверен.
Может ли кто-нибудь объяснить, почему это не так и как этого добиться? Спасибо!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Передайте простую строку в качестве аргумента команды в сценарии bash [дубликат]
Anonymous » » в форуме Linux - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Создание журнала запросов/ответов команды Curl в сценарии оболочки (bash)
Anonymous » » в форуме Linux - 0 Ответы
- 64 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как объединить строку после переменной (экспортированной) в сценарии оболочки [дубликат]
Anonymous » » в форуме Linux - 0 Ответы
- 68 Просмотры
-
Последнее сообщение Anonymous
-