URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10094
[ Назад ]

Исходное сообщение
"Разделитель в массиве"

Отправлено globi , 07-Май-16 19:12 
Я что-то не понимаю. Делаю построчно чтение из файла в массивы, указываю разделитель :
Начинаю проверять на вывод с 2ого элемента и мне выводится начиная с 2ого символа


IFS=:
index=0
while read line; do
    array[$index]="$line"
    index=$(($index+1))
done < /home/ubuntu/arr
for ((a=0; a < ${#array[*]}; a++))
do
    echo "$a: ${array[$a]:1}"
done

То есть, вместо вывода
0: name2:name3:1234
1: name2:name3:1234
2: name2:name3:1234
3: name2:name3:1234

Мне выводится
0: ame1:name2:name3:1234
1: ame1:name2:name3:1234
2: ame1:name2:name3:1234
3: ame1:name2:name3:1234

Пробовал указать IFS разными способами  IFS=$':'  IFS=":"
Менял и сам разделитель на любой другой символ - результат тот же


Содержание

Сообщения в этом обсуждении
"Разделитель в массиве"
Отправлено globi , 08-Май-16 00:33 
>[оверквотинг удален]
> 1: name2:name3:1234
> 2: name2:name3:1234
> 3: name2:name3:1234
> Мне выводится
> 0: ame1:name2:name3:1234
> 1: ame1:name2:name3:1234
> 2: ame1:name2:name3:1234
> 3: ame1:name2:name3:1234
> Пробовал указать IFS разными способами  IFS=$':'  IFS=":"
> Менял и сам разделитель на любой другой символ - результат тот же

Или может есть другое решение для моей задачи. Есть файл, в котором хранятся данные вида
name1:1234
name2:2345
name3:3456
name4:4567
name5:5678
name6:6789
и т.д. - имена и цифры разные

Я считываю массив и получаю переменные, которые дальше передаю в скрипт
Т.е. получаю
var1='name1'
var2=1234  
Далее эти значение отработали в скрипте например
awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv

И дальше передаю следующие значение. Получается
var1='name2'
var2='2345'  


"Разделитель в массиве"
Отправлено globi , 08-Май-16 01:15 
>[оверквотинг удален]
> и т.д. - имена и цифры разные
> Я считываю массив и получаю переменные, которые дальше передаю в скрипт
> Т.е. получаю
> var1='name1'
> var2=1234
> Далее эти значение отработали в скрипте например
> awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv
> И дальше передаю следующие значение. Получается
> var1='name2'
> var2='2345'

Всё, я видимо на майских не стоит работать ))


#!/bin/bash
while read line ; do
  IFS=":"
  set -- $line
  var1$1
  var2=$2
awk -F" *;" '$3< '$var2'' /home/blabla.csv > /home/try_"$var1".csv
done < /home/arr