2

Эти вопросы касаются функциональности source: в чем разница между выполнением сценария Bash и его поиском? Что делает «источник»?

но я не понимаю, почему при вызове source в скрипте передаются аргументы скрипта. Например, у меня есть эти 2 сценария:

caller.sh

source sourced.sh
source sourced.sh ""

sourced.sh

echo [$*]

Когда я делаю

./caller.sh arg1 arg2

я получил

[arg1 arg2]
[]

"arg1 arg2" передается в sourced.sh, хотя я не указал source sourced.sh $* .

Зачем?

Я обнаружил, что добавление "" предотвращает передачу аргументов. Это рекомендуемый способ предотвращения передачи аргументов?

1 ответ1

4

source позволяет вам выполнить команду в текущем контексте (аргументы $* являются частью контекста).

Второй вызов source перезаписывает эти аргументы. Обратите внимание, он перезаписывает их только для звонка, они восстанавливаются сразу после.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .