Передача аргументов с пробелами между (bash) скриптом
у меня есть следующие баш скрипт
а.Ш.:
#!/bin/bash
./b.sh 'My Argument'
б.Ш.:
#!/bin/bash
someApp $*
двоичный файл someApp получает $*
как 2 аргумента ("мой" и "аргумент") вместо 1.
Я проверил несколько вещей:
- запуск someApp только через
b.sh
работает - итерация + Эхо аргументы в
b.sh
работает - используя
$@
вместо$*
не делает a разница
1 ответ:
$*
, без кавычек, расширяется до двух слов. Вы должны процитировать его так, чтоsomeApp
получает один аргумент.someApp "$*"
вполне возможно, что вы хотите использовать , так что
someApp
получил бы два аргумента, если бы вы позвонилиb.sh
какb.sh 'My first' 'My second'
С
someApp "$*"
,someApp
получит один аргументMy first My second
. СsomeApp "$@"
,someApp
получит два аргумента,My first
иMy second
.