Автор Гілка: Проблеми з передачею параметрів баш-скрипту  (Прочитано 3188 раз)

VeryCold

  • Гість
Всім привіт, підкажіть, будь-ласка, як правильно передавати параметри з пробілами баш-скрипту.

script1.sh:
#!/bin/bash
echo =script1=
for p in "$@"; do echo $p; done
bash -c "./script2.sh $@"

script2.sh:

#!/bin/bash
echo "=script2="
for p in "$@"; do echo $p ; done

Виклик:
bash ./script1.sh arg1 "long arg2"

Очікуваний результат:
=script1=
arg1
long arg2
=script2=
arg1
long arg2


Реальний результат:
=script1=
arg1
long arg2
=script2=
arg1

В реальному результаті другий скрипт не виводить всі передані параметри.

VeryCold

  • Гість
Проблему вирішив. Переформував список параметрів через цикл.

#!/bin/bash
echo =script1=

for p in "$@"; do echo $p; done

ARGS=
for p in "$@"
do
    ARGS=$ARGS"\"$p\" "
done

bash -c "./script2.sh $ARGS"

Надіявся, що є красивіший спосіб.