我想要转换以下命令:
$ 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
您可以在脚本中放置一个上面的内容,以查看在执行命令之前替换了什么。