Я пишу скрипт в bash, и я пытаюсь читать из массива. Когда я перебирать массив с кодом ниже: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>
Увы, я застрял. Содержимое, которое я пытаюсь вернуть, - это элементы «return _» или просто «пустые» для ключей, у которых нет никаких «возвратных» элементов.
что, если вы пытаетесь с 'строки =«month_start_date ($ year_selected, $ month_selected)»' (с пробелом перед 'month_start_date')? кажется, у вас есть ведущее место в ваших ключах ... –
Он работает здесь: http://ideone.com/zynNIv – perreal
@perreal: конечно, он работает для вас, у вас нет ведущего места в ваших ключах , –