table_list=`grep t_ sql.out | awk '{print $1}'`
echo $table_list
#t_acct_adj t_assc_fop t_cpn_dup_use t_cpn_upfront_pexp
for table in "${table_list[@]}"
do
echo $table
done
预期结果:
t_acct_adj
t_assc_fop
t_cpn_dup_use
t_cpn_upfront_pexp
实际结果:
坏数组下标
答案 0 :(得分:4)
要将结果存储到数组中,您需要使用var=( values )
语法,或者在这种情况下使用var=( $(command output) )
:
table_list=($(grep t_ sql.out | awk '{print $1}'))
您也可以使用grep | awk
制作此awk
。为此,请检查anubhava's answer。
$ cat a
hello
bye
hello2
$ values=($(grep hello a))
$ for v in "${values[@]}"; do echo "$value"; echo "aa"; done
hello
aa
hello2
aa
答案 1 :(得分:1)
您可以使用以下单行awk替换所有脚本:
awk '/t_/ {print $1}' sql.out