gpt4 book ai didi

arrays - Shell 脚本不创建数组列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:15 25 4
gpt4 key购买 nike

我需要帮助解决一个奇怪的问题。

这行不是创建数组列表,我不知道为什么。

 date_final=($(echo $((date_end-date_start)) | grep -o "[0-9].*")) # PROBLEM

完整代码如下,特定数组将错误日期转换为新日期,但它应该是一个数组列表,而是创建一个变量。

#! /bin/bash

cd /var/lib/zabbixsrv/externalscripts/Manager
rm Unique.txt
declare -a date_final='()'
total_count=$(cat amazon.html 2>/dev/null | jq '.meta.total_count' | grep -o "[^\"]*")

i=0;
for i in $(seq 0 $total_count)
do
#compare=($(cat amazon.html 2>/dev/null | jq ".objects[$i].service_tag" | tr ' ' '\n'))
compare=($(cat amazon.html 2>/dev/null | jq ".objects[$i].conference" | grep -o "[^\"]*" | tr ' ' '\n'))
echo -e ${compare[@]} >> /var/lib/zabbixsrv/externalscripts/Manager/Unique.txt
done

compare1=($(cat Unique.txt | uniq -c | gawk '$1==1{print $2}'))

Number_line=$(echo ${#compare1[@]}) # PROBLEMA RESOLVIDO!!!!

let Number_line-=1


#echo -e ${compare[@]}

for i in $(seq 0 $Number_line)
do

#time=$(cat amazon.html 2>/dev/null | jq '.objects[] | select(.service_tag=='${compare1[$i]}')' | jq ".connect_time" | grep -o "[^\"]*" | grep -o "[^T][0-9].*" | grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9].")
time=$(cat amazon.html 2>/dev/null | jq '.objects[] | select(.conference=='${compare1[$i]}')' 2>/dev/null | jq ".connect_time" | grep -o "[^\"]*" | grep -o "[^T][0-9].*" | grep -o "[0-9]\{2\}:[0-9]\{2\}:[0-9].")
#echo -e ${compare1[$i]}
date_convert=$(date -d "$time 2 hour ago" +"%H:%M:%S")
date_start=$(date -d "$day $date_convert" +%s)
date_end=$(date +"%s")
date_final=($(echo $((date_end-date_start)) | grep -o "[0-9].*")) # PROBLEM
done
# rm Tenant.txt
#echo ${date_final[0]}
#echo -e ${date_final[@]}

tempo=1
i=0
echo -e $Numero_linha
echo -e ${date_final[@]}


for i in $(seq 0 $Number_line)
do

if ((${date_final[$i]} > $tempo)) 2>/dev/null; then
echo -e ${compare1[$i]}
fi
done

非常感谢

最佳答案

我已经使用你示例中的代码来声明 date_final 并初始化 date_startdate_end,在执行你的代码后我实际上得到了一个数组有问题的陈述。

我认为您的问题是您反复将单元素数组分配给变量而不是添加元素。

试试这个:

date_final+=( $((date_end-date_start)) )

这里的关键是使用 += 运算符,它附加而不是赋值。剩下的只是清理,因为你不需要 grep 来过滤数字(计算结果中只有数字),也不需要 echo .

关于arrays - Shell 脚本不创建数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41676211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com