Передача аргументов с пробелами между (bash) script - программирование
Подтвердить что ты не робот

Передача аргументов с пробелами между (bash) script

У меня есть следующие bash два скрипта

a.sh:

#!/bin/bash
./b.sh 'My Argument'

b.sh:

#!/bin/bash
someApp $*

Бинар someApp получает $* как 2 аргумента ('My' и 'Argument') вместо 1.

Я тестировал несколько вещей:

  • Запуск someApp только через b.sh работает как ожидалось
  • Итерация + эхо-аргументы в b.sh работает как ожидалось
  • Использование [email protected] вместо $* не имеет значения
4b9b3361

Ответ 1

$*, unquoted, расширяется до двух слов. Вам нужно процитировать его так, чтобы someApp получал один аргумент.

someApp "$*"

Возможно, вы хотите использовать [email protected] вместо этого, так что someApp получит два аргумента, если вы должны были вызвать b.sh как

b.sh 'My first' 'My second'

С someApp "$*", someApp получит единственный аргумент My first My second. С someApp "[email protected]", someApp получит два аргумента, My first и My second.