シェル スクリプトから外部アプリケーションを呼び出したいのですが、このシェル スクリプトは、(他のスクリプトから) パラメーターを 1 つの変数で取得します。単一のパラメーターに二重引用符を使用する必要がなくなり、単語をスペースで区切るまで、すべて問題ありませんでした。
これが私の問題の簡単な例です(sh_paramは渡されたすべてのパラメータを出力するだけです):
#!/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'
そして結果(sh_paramは渡されたすべてのパラメータを出力するだけです):
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
そして私が欲しい:
Param: single param
Param: separate
Param: params