Jak przekazać parametry wiersza poleceń z cudzysłowami przechowywanymi w pojedynczej zmiennej?
Chcę wywołać aplikację zewnętrzną ze skryptu powłoki, ale ten skrypt powłoki pobiera parametry (z innego skryptu) w jednej zmiennej. Wszystko było w porządku, dopóki nie musiałem używać podwójnych cudzysłowów dla pojedynczego parametru, ale słów oddzielonych spacją.
Oto uproszczony przykład mojego problemu (sh_param po prostu drukuje wszystkie przekazane parametry):
<code>#!/bin/sh pass() { echo "Result with \$@" ./sh_param $@ echo "Result with \"\$@\"" ./sh_param "$@" echo "Result with \$*" ./sh_param $* echo "Result with \"\$*\"" ./sh_param "$*" } pass '"single param" separate params' </code>
i wyniki (sh_param po prostu drukuje wszystkie przekazane parametry):
<code>Result with $@ Param: "single Param: param" Param: separate Param: params Result with "$@" Param: "single param" separate params Result with $* Param: "single Param: param" Param: separate Param: params Result with "$*" Param: "single param" separate params </code>
I chcę:
<code>Param: single param Param: separate Param: params </code>