[英]Bash append values to a list inside a for loop
我有以下bash腳本序列:
blocks=()
for line in ${fail_no[@]}
do
new_line=`sed "$line!d" $1`
command=`echo $new_line | cut -d ',' -f2`
while [[ $new_line != *"$PROJ_NAME"* ]]
do
line=$((line-1))
new_line=`sed "$line!d" $1`
done
curr_block=`echo $new_line | cut -d ',' -f1`
echo $curr_block
blocks+=("$curr_block")
done
echo $blocks
請忽略詳細信息,但我只想將curr_block
所有值添加到列表blocks
。 當我運行此腳本時,我有2個curr_block
值,但最后的block
變量僅包含第一個curr_block
的值,而不包含第二個curr_block
的值(如果是這種情況,則為第二個值)。 我已經看了1個小時,看不出問題出在哪里。
blocks
是一個數組。 使用echo $blocks
將打印第一個元素(如您所見)。
打印數組的所有元素的正確方法如下:
echo "${blocks[@]}"
我會用這樣的東西:
readarray -t blocks < <(
awk -F, -v pname "$PROJ_NAME" '
BEGIN { fail=('"${fail_no[*]}"'); }
$0 ~ pname {block=$1};
NR in fail { print $block; }
' "$1")
單awk
過程經歷由行的文件行,始終記住的當前值是什么block
會 ,應該是遇到一個匹配一個中列出行fail_no
。 完成后,輸出該塊。 然后將awk
的輸出收集在所需的數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.