Arrays 无法从AWK语句填充Bash数组

Arrays 无法从AWK语句填充Bash数组,arrays,bash,shell,Arrays,Bash,Shell,我需要从配置文件中获取1个或多个位置,然后检查每个位置是否有一些文件。我有一个AWK和SED的组合,可以找到位置,然后从文本文件中读取文件列表。我想检查文件的每个位置,并考虑使用bash数组保存这些位置 但是由于某些原因,我无法从AWK语句填充数组。在我看来,它将完整的内容加载到第一个元素中 如果我手动填充数组,它会工作;e、 g.替换线阵列=$(awk。。。 与 在下面的代码片段中,我删除了外部(文件名)循环,并添加了一些调试上下文 #!/bin/bash declare -a array

我需要从配置文件中获取1个或多个位置,然后检查每个位置是否有一些文件。我有一个AWK和SED的组合,可以找到位置,然后从文本文件中读取文件列表。我想检查文件的每个位置,并考虑使用bash数组保存这些位置

但是由于某些原因,我无法从AWK语句填充数组。在我看来,它将完整的内容加载到第一个元素中

如果我手动填充数组,它会工作;e、 g.替换线阵列=$(awk。。。 与

在下面的代码片段中,我删除了外部(文件名)循环,并添加了一些调试上下文

#!/bin/bash

declare -a array

OBJECTIVE_CONF=/u01/app/objective/perf/DOS1/config/objConf.xml
FILE=/tmp/DoS1_files.dsv

# IFS=$"/n"
array=$(awk '/<volume>/,/<\/volume>/' $OBJECTIVE_CONF | grep "<path>" | sed "s#<[/]*path>##g" | sed 's/^[ \t]*//' |sed 's/[ \t]*$//' )

element_count=${#array[@]}
echo "element_count is : $element_count "


echo "index is: $index"
echo "${array[$index]}"

   echo "filename loop"

   index=0
   while [ "$index" -lt "$element_count" ]
   do
      let "index = $index + 1"
      echo "index is: $index"
      echo "ls ${array[$index]}/filename_from_loop"
   done
   echo "leaving loop"
!/bin/bash
声明一个数组
OBJECTIVE_CONF=/u01/app/OBJECTIVE/perf/DOS1/config/objConf.xml
FILE=/tmp/DoS1_files.dsv
#IFS=$“/n”
数组=$(awk'/',/'$OBJECTIVE_CONF | grep”“| sed“s####g”| sed's/^[\t]*/'| sed's/[\t]*$/'))
元素计数=${#数组[@]}
echo“元素计数为:$element\u count”
echo“索引为:$index”
回显“${array[$index]}”
回显“文件名循环”
索引=0
而[“$index”-lt“$element\u count”]
做
设“index=$index+1”
echo“索引为:$index”
echo“ls${array[$index]}/filename\u from\u loop”
完成
回声“离开环路”
当从命令行运行时,Awk语句为我提供了预期的结果。我为开始和完成XML标记设置了Awk,为路径设置了grep,并使用SED删除路径exm标记以及引导和训练空间

bash-3.00$ awk '/<volume>/,/<\/volume>/' $OBJECTIVE_CONF | grep "<path>" | sed "s#<[/]*path>##g" | sed 's/^[ \t]*//' |sed 's/[ \t]*$//'
/docs01/objdata/admin/p1dig
/docs02/objdata/admin/p1dig
/docs03/objdata/admin/p1dig
/docs04/objdata/admin/p1dig
bash-3.00$awk'/',/'$OBJECTIVE_CONF | grep”“| sed“s####g”| sed's/^[\t]*/'| sed's/[\t]*$/'
/docs01/objdata/admin/p1dig
/docs02/objdata/admin/p1dig
/docs03/objdata/admin/p1dig
/docs04/objdata/admin/p1dig
$()
替换不会生成数组。若要获取数组,请使用另一对括号:

array=($(<command>))
array=($())
$()
替换不会生成数组。若要获取数组,请使用另一对括号:

array=($(<command>))
array=($())

您也可以使用readarray语句:

readarray array < <(command)

readarray数组<您也可以使用readarray语句:

readarray array < <(command)
readarray数组<