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


у меня есть следующие баш скрипт

а.Ш.:

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

б.Ш.:

#!/bin/bash
someApp $*

двоичный файл someApp получает $* как 2 аргумента ("мой" и "аргумент") вместо 1.

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

  • запуск someApp только через b.sh работает
  • итерация + Эхо аргументы в b.sh работает
  • используя $@ вместо $* не делает a разница
1 63

1 ответ:

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

someApp "$*"

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

b.sh 'My first' 'My second'

С someApp "$*",someApp получит один аргумент My first My second. С someApp "$@",someApp получит два аргумента,My first и My second.