【问题标题】:How to add quoted parameters to a quoted command in a shell script? [duplicate]如何在 shell 脚本中将带引号的参数添加到带引号的命令中? [复制]
【发布时间】:2020-07-29 07:25:07
【问题描述】:

我想在这样的 shell 脚本中编写一个命令:

#!/bin/sh

APPLICATION="date"
PARAMETER="-d '2020-01-01 1:23'"

CMD="${APPLICATION} ${PARAMETER}"

${CMD}

“参数”应该包含需要自己引用的参数。不幸的是,它不是这样工作的。通过PARAMETER="-d \"2020-01-01 1:23\"" 转义它们也不起作用。

【问题讨论】:

    标签: shell quoting


    【解决方案1】:

    在您构建CMD 之后,它只是字符串。它包含您可以将其解释为命令的内容,但 shell 将其视为裸字符串。

    如果你想让字符串重新解释它,你需要eval它:

    eval "$CMD"
    

    但是,eval is often considered evil

    【讨论】: