Как передать параметры командной строки с кавычками, хранящимися в одной переменной?

Я хочу вызвать внешнее приложение из сценария оболочки, но этот сценарий оболочки получает параметры (из другого сценария) в одной переменной. Все было в порядке, пока мне не пришлось использовать двойные кавычки для одного параметра, но слова разделялись пробелом.

Вот упрощенный пример моей проблемы (sh_param просто печатает все переданные параметры):

<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>

и результаты (sh_param просто печатает все переданные параметры):

<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>

И я хочу:

<code>Param: single param
Param: separate
Param: params
</code>

Ответы на вопрос(5)

Ваш ответ на вопрос