Como passar parâmetros de linha de comando com aspas armazenadas na variável única?

Eu quero chamar o aplicativo externo do script shell, mas este script recebe parâmetros (de outro script) em uma única variável. Tudo estava OK até que eu não precisei usar aspas duplas para um único parâmetro, mas palavras separadas por espaço.

Aqui está um exemplo simplificado do meu problema (o sh_param apenas imprime todos os parâmetros passados):

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

e resultados (sh_param apenas imprime todos os parâmetros passados):

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

E eu quero:

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

questionAnswers(5)

yourAnswerToTheQuestion