Linux/Bash:如何取消引用?

Dan*_*all 10 linux bash shell command-line arguments

遵循命令

echo 'a b' 'c'
Run Code Online (Sandbox Code Playgroud)

输出

a b c
Run Code Online (Sandbox Code Playgroud)

但以下

X="'a b' 'c'"
echo $X;
Run Code Online (Sandbox Code Playgroud)

将结束

'a b' 'c'
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种取消引用$ X的方法,以便输出"ab c",但不会丢失合并的"ab"参数.(= 2个参数而不是3个,对命令'echo'没有区别,但对于其他命令如'cp'没有区别

van*_*nza 10

试试xargs:

$ echo $x
'a b' 'c'

$ echo $x | xargs ./echo
argc = 3
argv[0] = ./echo
argv[1] = a b
argv[2] = c
Run Code Online (Sandbox Code Playgroud)


Kar*_*ath 7

eval echo $x
Run Code Online (Sandbox Code Playgroud)

这将a b作为第一个参数和c第二个参数传递

注意:这实际上会评估参数,例如:

$ x='$((3+5))'
$ eval echo $x
8
Run Code Online (Sandbox Code Playgroud)

如果那不是你想要的东西@ vanza's xargs.