在 bash 中附加带有引号和空格的变量

在 bash 中附加带有引号和空格的变量

我想在带有参数的 bash 脚本中运行命令,但参数是有条件的。我想要实现的是这个

command --myflag var="value with space"

在上面的情况下,我想要有条件--myflag var="value with space",并且由于空格(以及其他原因),它还必须有双引号。所以我尝试了这样的事情

if [ $somecondition ]; then
  FLAG="--myflag var=\"value with space\""
fi

command $FLAG

当我在调试中运行上面的内容时,我可以看到运行的是这个

command --myflag 'var="value' with 'space"'

注意单引号。我不知道为什么会这样,但经过多次尝试后我似乎找不到解决方案,

人们将如何解决这个问题?

答案1

你将不得不使用Bash 数组扩展。就像是:

declare -a FLAG
if [ $somecondition ]; then
  FLAG=(--myflag 'var="value with space"')
fi
command "${FLAG[@]}"

相关内容