在 macOS 上的 Bash 脚本中转义引号

在 macOS 上的 Bash 脚本中转义引号

我想要转换以下命令:

$ gdate --date='TZ="America/New_York" 1am' +"%a %F %H:%M %Z"

使用参数写入脚本中,例如:

#!/usr/bin/env bash
gdate --date='TZ="$1" $2' +"%a %F %H:%M %Z"

但由于需要正确的引号转义,它不起作用。

我正在努力寻找正确的方法来做到这一点。

答案1

shell 不会在单引号中进行变量替换,但可以在双引号中进行替换。因此,您需要将第一个参数转换为双引号字符串,如下所示:

gdate "--date='TZ=\"$1\" $2'" +"%a %F %H:%M %Z"

我将第一个参数放在双引号中,然后转义内部双引号,以便它们通过这一轮 shell。

set -x您可以在脚本中放置一个上面的内容,以查看在执行命令之前替换了什么。

相关内容