У меня есть скрипт, который анализирует аргументы из родительского скрипта.
script1.sh
echo " script1 got $# args: $@"
script2.sh
source script1.sh
echo "script2 got $# args: $@"
Когда я его выполняю, яget:
$ bash script2.sh 1 2 cat
Script1 got 3 args: 1 2 cat
Script2 got 3 args: 1 2 cat
Однако я хотел бы изменить script2.sh, чтобы позволить script1.sh получать свои собственные аргументы.
NewScript2.sh
source script1.sh arg1
echo "script2 got $# args: $@"
Теперь я получаю
$ bash script2.sh 1 2 cat
Script1 got 1 args: arg1
Script2 got 3 args: 1 2 cat
Я могу это исправить, поэтому я получаю оба аргумента, меняя script2 на
source script1.sh "$@" arg1
echo "script2 got $# args: $@"
Мой вопрос: как я могу изменить script1, чтобы различать аргументы, полученные из script1а script2?
Независимо от того, что я делаю с $@
(цитаты, фигурные скобки и т. Д.), Он все равно говорит мне, что у меня есть 4 аргумента. То же самое для обработки входных аргументов.
Пример:
$ bash script2.sh 1 2 cat
Script1 got 4 args: arg1 1 2 cat
Script2 got 3 args: 1 2 cat
$ bash script2.sh "1 2 cat"
Script1 got 4 args: arg1 1 2 cat
Script2 got 1 args: 1 2 cat