簡體   English   中英

Shell腳本未創建數組列表

[英]Shell Script not creating an Array List

我需要解決一個奇怪的問題。

這行不是在創建數組列表,我不知道為什么。

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

整個代碼在下面,特定的數組將錯誤的日期轉換為新的日期,但是它應該是一個arraylist,並且它創建一個變量。

#! /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

暫無
暫無

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

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