我正在尝试在注入带引号的变量时运行命令,但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"
答案 0 :(得分:3)
最好使用BASH数组存储命令行:
myvar=(--name 'user should login')
cucumber "${myvar[@]}"
我还降低了你的变量,因为使用所有UPPER案例变量有时会出问题。
答案 1 :(得分:-1)
这样做没有 bash 主义:
MYVAR=" --name='user should login' "
eval cucumber $MYVAR