/usr/bin/env
экспортирует значения, переданные в парах key=value
, в среду любой программы, для которой она используется.
kubectl -n nmspc exec "$POD" -- env curIP=123 script01
Обратите внимание, что вы никогда не должны использовать $runScript
илилюбое другое расширение без кавычек для вызова команды оболочки.См. BashFAQ # 50 - Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!
В качестве примеракак вы могли бы держать bash -c
на месте, но ваша команда работала, рассмотрим:
runScript() {
kubectl -n nmspc exec "$POD" -- bash -c 'export curIP=123 && script01 "$@"' _ "$@"
}
runScript --command "do stuff"
Здесь runScript
- это функция , а не строкапеременная, и он явно передает весь список аргументов до kubectl
.Аналогично, копия bash
, запущенная kubectl
, явно передает свой список аргументов (после $0
placeholder _
) до script01
, поэтому конечный результат - ваши аргументы, делающие этодо вашей окончательной программы.