簡體   English   中英

如何在一行中將命令的結果傳遞給另一個命令?

[英]How can I pass the result of a command to another command in one line?

從午夜起,如何才能將分鍾數傳遞到一條線路的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)`

以下提供了自任何時區的午夜以來的分鍾,附帶條件是“午夜”和“現在”可能具有不同的時區偏移:

$(( ($(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 ))}"

假設分鍾數應該是整數而不是字符串:

my_cli --json '{"minutes" : '"$(( ( ( $(date +%s) - 18000 ) % 86400 ) / 60 ))"' }'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM