如何从午夜将分钟传递到一行cli
?
这有效:
echo $[ ( ( `date "+%s"` - 28800 ) % 86400 ) / 60 ]
// Correctly returns minutes since midnight in PST
但是如何将其传递给另一个命令呢?
这不起作用:
my_cli --json '{"minutes" : ' $[ ( ( `date \"+%s\"` - 28800 ) % 86400 ) / 60 ] '}'
返回:
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
ERROR: "my_cli json" was called with arguments ["-300", "}"]
Usage: "my_cli json"
我也尝试过:
my_cli --json "{\"minutes\" : \$[ ( ( $(date "+%s") - 28800 ) % 86400 ) / 60 ] }"
我收到以下错误:
...unexpected token at '{"connection" : $[ ( ( 1432139956 - 28800 ) % 86400 ) / 60 ] }' (JSON::ParserError)`
答案 0 :(得分:1)
以下内容为午夜提供任意时区的分钟数,条件是“午夜”和“现在”可能有不同的时区偏移:
$(( ($(date +%s) - $(date +%s -d$(date +%Y-%m-%d))) / 60 ))
(我使用了表单$((...))
和$(...)
而不是过时的,已弃用$[...]
和`...`
。)
您可能需要为CLI提供一个参数,因此您需要小心引用。例如:
my_cli --json "{\"minutes\" : $(( ($(date +%s) - $(date +%s -d$(date +%Y-%m-%d))) / 60 ))}"
答案 1 :(得分:1)
假设分钟数应该是整数而不是字符串:
my_cli --json '{"minutes" : '"$(( ( ( $(date +%s) - 18000 ) % 86400 ) / 60 ))"' }'