Я заметил странное поведение при поиске другого скрипта в моем скрипте оболочки.Сценарий, который я использую для настройки среды в моем сценарии оболочки, принимает необязательный аргумент, например
source setup.sh version1
Однако в моем сценарии оболочки также есть переменные аргумента командной строки.Например:
./myscript.sh TEST 1
Внутри myscript.sh
:
#!/bin/zsh
source setup.sh
echo ROOT version setup $ROOT_SYS
...more of the script
Проблема, которую я заметил в моем сценарии выше, заключается в том, что аргумент $1
(TEST
в этом примере) используется в команде source setup.sh
.Это приводит к тому, что команда становится
source setup.sh TEST
, что, конечно, дает сбой, поскольку setup.sh
не имеет версии TEST
.
Я решил эту проблему, отредактировав свой скрипт ниже.
#!/bin/zsh
source setup.sh version1
echo ROOT version setup $ROOT_SYS
...more of the script
Команда source
теперь не принимает аргумент $1
.
Почему / Как команда source получает аргумент $ 1, когда я запускаю свой скрипт оболочки?