在shell函数中读取引号内的命令行参数

在shell函数中读取引号内的命令行参数,shell,Shell,我想在zshrc中为以下命令创建一个函数- node scripts/node_es6.js scripts/small_run_oneoff.js runmiaeventstatsjob'{“targetDate”:“02-01-2018”} 我想将targetDate作为命令行参数传递。因此,我在zshrc- function mia-events-stats() { node scripts/node_es6.js scripts/small_run_oneoff.js runMi

我想在
zshrc
中为以下命令创建一个函数-

node scripts/node_es6.js scripts/small_run_oneoff.js runmiaeventstatsjob'{“targetDate”:“02-01-2018”}

我想将
targetDate
作为命令行参数传递。因此,我在
zshrc
-

function mia-events-stats() {
    node scripts/node_es6.js scripts/small_run_oneoff.js runMiaEventsStatsJob '{"targetDate": "$1"}'
}
然而,这是行不通的。当我执行
mia events stats 02-01-2018
时,传递给实际运行代码的
targetDate
$1


这里缺少什么?

单引号内字符串的字符被引用。因此,您的美元符号被视为正常字符

你应该用双引号替换单引号,让魔术发生,并像这样转义内部双引号:

"{\"targetDate\": \"$1\"}"
如果您需要阅读单引号,只需添加它们:

"'{\"targetDate\": \"$1\"}'"
由于使用了双引号,单引号不会产生任何效果。

这对zsh和噢,我的zsh来说并不特别。这两者都不适用于功能。任何shell解释器中的任何脚本都是如此。也许你可以换一下标签。另外,你文章的标题很笼统,不能概括你的问题。