我看到了很多不同的解决方案来解决从管道中保留数组的问题,但是似乎没有一个能为我解决问题,目前我的脚本工作正常,但是数组"数据库数组"在"完成"时丢失,我将如何用我的复杂管道方案保存这些信息?
databasesarray=()
N=0
dbs -d 123123 | grep db|awk '{print $2}'|while read db;
do
databasesarray[$N]="$db";
databasesarray[$N]+=$(gdb $db|grep dn);
echo ${N} ${databasesarray[$N]};
N=$(($N + 1));
done
更好
、更有效的循环填充数组的方法:
databasesarray=()
while read -r db; do
databasesarray+=( "$db $(gdb "$db"|grep "dn")" )
done < <(dbs -d 123123 | awk '/db/{print $2}')
- 您的 grep 和 awk 可以合并为一个
- 而不是管道,而最好使用过程替换
< <(...)
语法
PS:您可以使用read -a
来填充数组:
read -a databasesarray < <(dbs -d 123123 | awk '/db/{print $2}')