0

複雑な引数を持つ関数を実行したい

このように入力したい(可能であれば?)

set [-options here] a111 "a222" "a333 a333" "a444"
set [-options here] b111 "b222" "b333 b333" "b444"
set [-options here] c111 "c222" "c333 c333" "c444"

myfunc "$@"

myfunc見るべき

a111 "a222" "a333 a333" "a444" ==> as the first argument with keeping ""
b111 "b222" "b333 b333" "b444" ==> as the second argument with keeping ""
c111 "c222" "c333 c333" "c444" ==> as the third argument with keeping ""

セットまたは他の方法でそれを行うことは可能ですか? そしてそれを行う方法は?

ちなみに使いたくない\"

また、変数を評価しないため、'(like ) は使用できません'"a333 a333"'

4

1 に答える 1

1

値に引用符を付けたい場合 (これは一般的に奇妙なことです)、シェルから引用符をエスケープする必要があります。

$ set -- a111 '"a222"' '"a333 a333"' "\"a444\""
$ c() {
printf argc:%s\\n "$#"
printf argv:%s\\n "$@"
}
$ c "$@"
argc:4
argv:a111
argv:"a222"
argv:"a333 a333"
argv:"a444"
于 2015-02-16T15:43:31.690 に答える