如何在 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
我正在尝试 运行 一个命令,同时注入一个有引号的变量,但是 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