在下面的代码中,我希望将输出pyfg()
完全按照回显(即之间的空格-htns
和crl
按字面意思解释,而不是空格,按aoeu()
)传递给aoeu()
. 当然,问题在于 in aoeu()
, $1
is -htns
, $2
is crl
, and $3
,在这种情况下我根本不想要 is qjkx
。我知道这个例子完全没用,但是我试图应用它的真正应用程序调用一个外部程序来代替下面的aoeu()
,所以我确实需要类似下面的东西。
#!/bin/bash
# pass_space_function.sh
aoeu() {
echo "$1" "$2"
}
pyfg() {
echo "-htns crl" "qjkx"
}
aoeu $(pyfg)
我运行上述输出:
$ ./pass_space_function.sh
-htns crl
我想要的输出是:
$ ./pass_space_function.sh
-htns crl qjkx
需要明确的是,我确实明白为什么我的代码不起作用,但我不太确定的是如何让它做我想做的事情。
编辑:
#!/bin/bash
aoeu() {
echo 1:"$1" 2:"$2" 3:"$3"
}
pyfg() {
# These variables might be user-provided.
wvz="/usr/lib/scarychacacters_\"@#$:%^&:*(){}[]; a o ;u ;::e i y f.so.4"
bm="/space space space"
snt="/var/cache/normalpath"
printf "%q %q %q" "$wvz" "$bm" "$snt"
}
aoeu $(pyfg)
对我来说,该代码返回1:/usr/lib/scarychacacters_\"@#\$:%\^\&:\*\(\)\{\}\[\]\;\ 2:a\ 3:o\
. 它显然在$wvz
.