Функция для создания массива путем чтения файла - PullRequest
0 голосов
/ 14 ноября 2009

Я создаю сценарии, которые будут хранить содержимое файла с разделителями трубы. Каждый столбец хранится в отдельном массиве. Затем я читаю информацию из массивов и обрабатываю ее. Есть 20 файлов с разделителями трубы, и мне нужно написать 20 скриптов. Обработка, которая будет происходить в каждом сценарии после сохранения информации в массиве, отличается. Количество столбцов в каждом файле с разделителями каналов различно (но ни в коем случае оно не должно превышать 9 столбцов). Мне нужно выполнить эту операцию по сохранению информации в массиве в начале каждого скрипта. То, как я это делаю в настоящее время, приведено ниже. Мне нужна помощь от вас, чтобы понять, как я могу написать функцию для выполнения этого действия.

cat > example_file.txt <<End-of-message
some text first row|other text first row|some other text first row
some text nth row|other text nth row|some other text nth row
End-of-message
# Note that example_file.txt will available. I have created it inside the script just to let you know the format of the file
OIFS=$IFS
IFS='|'
i=0
while read -r first second third ignore
do
    first_arr[$i]=$first
    second_arr[$i]=$second
    third_arr[$i]=$third
    (( i=i+1 ))
done < example_file.txt
IFS=$OIFS

1 Ответ

0 голосов
/ 14 ноября 2009

Это своего рода минимальное изменение в вашем скрипте, которое должно помочь вам ...

...
...
while read -r first second third ignore
do
    arr0[$i]=$first
    arr1[$i]=$second
    arr2[$i]=$third
    (( i=i+1 ))
done < example_file.txt
IFS=$OIFS

proc0 () {
  for j in "$@"; do
    echo proc0 : "$j" 
  done
}

proc1 () {
  echo proc1
}

proc2 () {
  echo proc2
}

for i in 0 1 2; do
  t=arr$i'[@]'
  proc$i "${!t}"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...