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
实际结果:
不良数组下标
将结果存储到数组中,您需要使用var=( values )
语法,或者在这种情况下,var=( $(command output) )
:
table_list=($(grep t_ sql.out | awk '{print $1}'))
您也可以使用awk
制作此grep | awk
。为此,检查Anubhava的答案。
示例
$ cat a
hello
bye
hello2
$ values=($(grep hello a))
$ for v in "${values[@]}"; do echo "$value"; echo "aa"; done
hello
aa
hello2
aa
您可以用此行尴尬替换所有脚本:
awk '/t_/ {print $1}' sql.out