function generateFileList {
for entry in "$ORIGINATION_PATH"/*
do
entry=${entry%.*} # retain the part before the dot
entry=${entry##*/} # retain the part after the last slash
if [ $(contains "${FILENAME[@]}" $entry) == "n" ]; then
FILENAME[$fn_counter]=$entry
fn_counter=(expr $fn_counter + 1)
echo $entry "added to filelist"
echo ${FILENAME[$fn_counter]}
fi
done
NUMBER_OF_FILES=$(expr ${#FILENAME[@]} + 1)}
У меня есть эта функция. У моего ORIGINATION_PATH есть много файлов. Однако, когда я вызываю эту функцию, мой массив $ FILENAME заполняется только одной записью. Почему? Внутри функции все кажется прекрасным, и кажется, что массив $ FILENAME получает все значения, которые ему нужно получить, но когда я проверяю вне функции, я получаю только одно значение в $ FILENAME araybash script function scope
Как написано, определение 'generateFileList' потерпит неудачу. Кроме того, в коде есть неопределенные переменные. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve), а затем обновите вопрос. – John1024
В стороне - рассмотрите использование имен нижнего регистра для собственных переменных. См. [Обсуждение переменных среды POSIX для переменных среды] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html), параграф 4, отметив, что имена всех шапок используются для переменных со значением для системы и shell, и что другие имена зарезервированы для приложений. Поскольку установка переменной оболочки будет перезаписывать любую переменную среды с похожим именем, это соглашение обязательно применимо и к ним. –