【发布时间】:2018-06-12 21:42:27
【问题描述】:
以下内容在 bash 中作为脚本运行,目前手动调用。
在过去的几个小时里,我一直在努力解决这个问题。无论我如何处理它,我似乎都无法将变量传递给 jq 。当我手动设置变量而不引用我的 jq 命令并回显它时,它可以工作。但是,当它放在我的命令中时,它不起作用。
我认为这与 fromdateiso8601 或 < 运算符导致问题有关。
timestamp.json 在文件中包含数百个以下内容。我需要参考每一个,并取出任何超过 45 天的。这是我尝试过的。
date -d -45days +%s >> 45days.text
days=$(<45days.text)
echo $days
cat $_fileformated | jq 'select(.Timestamp | . == null or fromdateiso8601? < "$days" ) .serverrname' >> $filereport
cat $_fileformated | jq -r --arg days "$days" 'select(.Timestamp | . == null or fromdateiso8601? < "$days" ) .serverrname' >> $filereport
cat $_fileformated | jq -r --arg days "$days" 'select(.Timestamp | . == null or fromdateiso8601? < env.days ) .serverrname' >> $filereport
cat $_fileformated | days="$days" jq 'select(.Timestamp | . == null or fromdateiso8601? < 'env.days' ) .serverrname' >> $filereport
{
"servername": "xxxxxxxx",
"Timestamp": "2018-06-12T13:41:08Z"
}
【问题讨论】:
-
请提供一个示例输入(最后四行)和所需的输出。
-
单引号内的双引号不会被解析。所以
'something "$days" something'不会取代$days。