如何在 bash 中使用包含引号的变量来 运行 命令?

How to run commands using variables which included quotes, in bash?

我正在尝试 运行 一个命令,同时注入一个有引号的变量,但是 bash 不断添加我不需要的额外引号并伪造了过程...

这是我的例子:

set -x
MYVAR=" --name='user should login' "
cucumber $MYVAR

这导致 运行宁这个:

cucumber  '--name='\''user' should 'login'\'''

命令失败。但是,当我按原样 运行 cucumber --name='user should login' 不使用变量时,一切都按预期进行。

PS。 cucumber "${MYVAR}"cucumber "$MYVAR"

结果相同

存放命令行最好用BASH数组:

myvar=(--name 'user should login')
cucumber "${myvar[@]}"

我还小写了您的变量,因为有时使用所有大写变量可能会出现问题。

这有效,没有 bash主义:

MYVAR=" --name='user should login' "
eval cucumber $MYVAR