Передать аргументы скрипту, который является аргументом другого скрипта - PullRequest
0 голосов
/ 28 января 2020

Я новичок в программировании, поэтому, пожалуйста, миритесь с тем, как я пытаюсь объяснить мою проблему (также любая помощь, касающаяся того, как элегантно сформулировать плитку, приветствуется).

У меня есть сценарий bash ( скажем, например script1.sh), который принимает аргументы a, b и c (другой сценарий). По сути, аргумент c для script1.sh является именем другого скрипта (скажем, script2.sh). Однако script2.sh принимает аргументы d, e и f. Поэтому мой вопрос: как передать аргументы script1.sh ?? (пример, ./script1.sh -a 1 -b 2 -c script2.sh -d 3 -e 4 -f 5)

Заранее извините, если вышеупомянутое не имеет смысла, не знаю, как еще это сформулировать ...

1 Ответ

1 голос
/ 28 января 2020

Вы должны использовать "" для этого

./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"

Попробуйте script1. sh с этим кодом

#!/bin/bash

for arg in "$@"; { # loop through all arguments passed to the script
    echo $arg
}

Вывод будет

$ ./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"
-a
1
-b
2
-c
script2.sh -d 3 -e 4 -f 5

Но если вы запустите это

#!/bin/bash

for arg in $@; { # no double quotes around $@
    echo $arg
}

Вывод будет

$ ./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"
-a
1
-b
2
-c
script2.sh
-d
3

4
-f
5

Но -e почему нет? Coz echo поддерживает аргумент -e и использует его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...