Bash:从数组中读取

时间:2013-06-26 21:23:18

标签: bash shell unix

我正在用bash编写脚本,我正在尝试从数组中读取。当我使用下面的代码遍历数组时:

for item in "${!functionDict[@]}"
do
    echo "{ $item : ${functionDict[$item]} }" >> array.txt
done

输出(在“array.txt”中):

{  month_start_date($year_selected, $month_selected) : return $date; }
{  logWarning($message) : return logEvent($message, $c_event_warning); }
{  daysPastLastQuarterX($curYear, $curMonth, $curDay, $selected_year, $selected_quarter,   $nDays) : return false;:return false;:return false;:return false;:return true;:return $delta > $nDays; }
{  setExcelLabelCell($sheet, $cell, $label, $width) :  }
{  asCurrencyString($value) : return formatCurrency($value); }
{  getNumericMonthName($m) : return $numericMonth; }
{  normalize_for_PDF(&$text) :  }

但是,我在查询数组中的各个元素时遇到了麻烦。

我试过

string='month_start_date($year_selected, $month_selected)'
echo "test_output: ${functionDict[$string]}"

但是我

test_output: <blank>

我还尝试插入一些RegEx通配符,以防密钥周围有空格。

echo 'size of array: '"${#functionDict[@]}"
echo "TEST: functDict[logWarning] = ${functionDict[.*'logWarning($message)'.*]}"

size of array: 157   //I didn't copy/paste all the elements in the array in this post
TEST: functDict[logWarning] = <blank>
唉,我被困了。我正在尝试取回的内容是“返回 _ ”项目,或者只是没有任何“返回”项目的密钥的“空白”。

1 个答案:

答案 0 :(得分:0)

要回答的问题归@gniourf_gniourf所有。 (见评论)

所有密钥中都有一个额外的前导空格,我没有将其包含在我的测试查询中。

(在这里提供答案,以便人们知道这个问题已经解决。希望这可以在SO上练习)