使用shell中陣列存資料並最終將資料存入檔案
阿新 • • 發佈:2019-01-27
近期做一個從某url介面獲取資料的小程式,發現因為該介面在海外,連線情況不穩定,資料下載速度也很慢。碰巧這些資料是下一步操作的源資料。而且後續的處理對資料完整性要求較高。開始時候直接使用curl將結果重定向到檔案中,結果每天都免不了出現一兩次報警。全是因為資料不完整導致。
需要解決這種情況,開始想的辦法是資料都寫入快取然後再一次性寫入檔案,但是實現起來不太方便。後來就像先把資料存入陣列中。等這個陣列寫完後再將陣列輸出到一個檔案中。同時提高後續指令碼的執行頻率這樣就算是某一次使用了未來得及更新的舊程式也不會影響整體程式執行結果。
陣列的使用方式如下:
#!/bin/bash
work_dir=/opt/py/
function func1 (){
re="12231241412314123"
result[0]=`curl -b cookies_1.txt xxxxxxxxxxxxx`
result[1]="`curl -b cookies_2.txt xxxxxxxxxx`:${re}"
result[2]=`echo good`
# exec > out1.txt 使用exec會直接進入exec子程序
#cat ${result[@]}>1234.txt #這種方法把陣列寫成一行寫到檔案中,不美觀不好切片
>out1.txt#清空檔案準備寫入資料,直接從陣列輸出寫入速度很快。不會對後續的指令碼造成影響。
for i in ${result[@]}; do#將陣列中儲存的資料逐行寫入到一個檔案中
echo ${i}>>out1.txt;
sleep 3
done
#return
}
func1
echo "function is run over! "
陣列還是個比較好用的資料型別,值得繼續深挖一下