シェルスクリプト総合 その13
■ このスレッドは過去ログ倉庫に格納されています
0258名無しさん@お腹いっぱい。
2008/11/17(月) 22:10:51#!/bin/sh
TestFunc()
{
echo $1 # ここでは ls -l "aaa bbb"
$1 # ここでは ls -l aaa bbb と処理されてしまう
}
TestFunc "ls -l \"aaa bbb\""
Bシェルで関数に引数を与え、コマンドを実行することを
考えています。
コマンドの引数にスペースつきのものを含む場合、ダブルコーテーションで
くくっていても、実行される場合は外されてしまうようです。
そもそもechoで出した場合は正しく表示されるのに、実行した場合
ダブルコーテーションが外れてしまう理由も良く分からないのですが、
どのようにすれば正しく実行できるのでしょうか?
TestFuncc()
{
$1 $2 "$3"
}
TestFunc "ls" "-l" "aaa bbb"
とすれば良いのは分かるのですが、コマンドの引数が変わった場合に対応できないので
汎用性が落ちますし、出来れば一つの文字列で関数に渡したいのです
■ このスレッドは過去ログ倉庫に格納されています