以下是在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"
}
答案 0 :(得分:0)
使用您的示例输入和days = 1524953907,以下查询:
jq --argjson days $days '
select(.Timestamp | select(fromdateiso8601 > $days)).servername'
的产率:
"xxxxxxxx"
可以使用--arg days $days
但是您必须将字符串转换为数字,例如按$days|tonumber