Я передаю пустой массив функции и внутри функции массив имеет один элемент, но элемент пуст.Баш, передающий массив функции вставляет пустой элемент
#!/bin/bash
#ytest
#==============================================================
function ShowArray
{
echo "in ShowArray"
AlocalArray=("${!1}")
#alternatively you could do it like that
#echo "${AlocalArray[@]}" #DEBUG
echo "Showing content of array"
local iMax
iMax=${#AlocalArray[*]}
echo "ARRAYCOUNT: $iMax"
for ((iItem=0; iItem < iMax ; iItem++))
do
echo "ITEM: ${AlocalArray[$iItem]}"
done
}
declare -a AARRAY
echo "${AARRAY[@]}" #DEBUG
iMax=${#AARRAY[*]}
echo "HERE ARRAYCOUNT: $iMax ITEMS in ARRAY"
ShowArray "$AARRAY"
Из тела сценария я получаю:
HERE ARRAYCOUNT: 0 ITEMS in ARRAY
Изнутри функции я получаю:
in ShowArray
Showing content of array
ARRAYCOUNT: 1
ITEM:
Что случилось с моим кодом? Заранее спасибо.
Отказ от ответственности: этот демонстрационный скрипт ничего не полезен и служит только для демонстрации неправильного поведения.
Благодарности анубхава. Вы сделали мой день. –
Добро пожаловать, рад, что это помогло. – anubhava
У меня есть еще один вопрос по тому же tolpic. Возможно, вы также можете мне помочь: http://stackoverflow.com/questions/29015565/bash-adding-a-string-with-a-space-to-an-array-adds-two-elements –