powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скинуть файл построчно в переменные
25 сообщений из 30, страница 1 из 2
скинуть файл построчно в переменные
    #32878684
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текстовый файл. Его надо построчно превратить в набор переменных, т.е.
строка1 - var1
строка2 - var2
и т.д.
Как это можно сделать в shell.

Заранее спасибо.
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878836
miniСЛОН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая конструкция подойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
# cat > nado.txt
test1
test2
^D
# awk '{ print "yo nigga = " $1 ; }' nado.txt
yo nigga = test1
yo nigga = test2
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878867
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем, надо весь массив переменных оставить, т.к. с ним много ещё
работать.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878872
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё, файл-то текстовый, поэтому встречаются пробелы, а вышеприведённый
пример откусывает кусок до пробела, и с ним работает, остальная строка
теряется...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878898
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри команду read в man bash.
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878937
miniСЛОН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyara
И ещё, файл-то текстовый, поэтому встречаются пробелы, а вышеприведённый
пример откусывает кусок до пробела, и с ним работает, остальная строка
теряется...
это зависит от того, чем у тебя является разделитель
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
# cat > nado.txt
test1 test3
test2 test4
^D
# awk -F \n '{ print "yo nigga = " $1 ; }' nado.txt
yo nigga = test1 test3
yo nigga = test2 test4
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878950
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 miniСЛОН
Я просто написал $0, и получилось, не вникая какие разделители :)

2 Хрен
Пробовал к вышеприведённому прикрутить read, но пока не очень понимаю
как.... :(

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32878980
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyara
2 miniСЛОН
Я просто написал $0, и получилось, не вникая какие разделители :)

2 Хрен
Пробовал к вышеприведённому прикрутить read, но пока не очень понимаю
как.... :(

Posted via ActualForum NNTP Server 1.1

Shell какой? bash, csh или еще что?
Для bash можно так (наверное):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#!/bin/bash
i= 0 ; n= 0 
cat file.txt |
{
while read s
do
 let "n++";  let "i++"
 var[$i]="$s"
done

for (( i= 1  ; i<=$n; i++ ))
do
 echo var[$i]=${var[$i]}
done
}
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32879048
miniСЛОН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyara
2 miniСЛОН
Я просто написал $0, и получилось, не вникая какие разделители :)
савсем забыл про $0 =)
как говориться "плохо быть глупым" =)
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32879367
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, чё-то не получается.
file.txt
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
stroka1

stroka2

stroka3

stroka4

stroka5


test.sh
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#!/bin/sh -xv

i= 0 ; n= 0 

cat file.txt |

{

while read s

do 

i=`expr $i +  1 `

var_$i=$s

echo "var_i" $var_$i

echo "i" $i

echo "s" $s

done

}


А вот что получается в итоге :

========================================================

#!/bin/sh -xv

i=0; n=0

+ i=0

+ n=0

cat file.txt |

{

while read s

do

i=`expr $i + 1`

var_$i=$s

echo "var_i" $var_$i

echo "i" $i

echo "s" $s

done

}

+ cat+ read file.txt s

+ expr 0 + 1

+ i=1

+ var_1=stroka1

var_1=stroka1: not found

+ echo var_i 1

var_i 1

+ echo i 1

i 1

+ echo s stroka1

s stroka1

+ read s

+ expr 1 + 1

+ i=2

+ var_2=stroka2

var_2=stroka2: not found

+ echo var_i 2

var_i 2

+ echo i 2

i 2

+ echo s stroka2

s stroka2

+ read s

+ expr 2 + 1

+ i=3

+ var_3=stroka3

var_3=stroka3: not found

+ echo var_i 3

var_i 3

+ echo i 3

i 3

+ echo s stroka3

s stroka3

+ read s

+ expr 3 + 1

+ i=4

+ var_4=stroka4

var_4=stroka4: not found

+ echo var_i 4

var_i 4

+ echo i 4

i 4

+ echo s stroka4

s stroka4

+ read s

+ expr 4 + 1

+ i=5

+ var_5=stroka5

var_5=stroka5: not found

+ echo var_i 5

var_i 5

+ echo i 5

i 5

+ echo s stroka5

s stroka5

+ read s

================================================================

Причём я пробовал сбросить значение $s во временный файл, а потом из него прочитать командой read - та же байда, var_i получается равным i, но без жалоб. Чё-то не так, а что понять не могу...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32879882
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массивы использовать синтаксис не позволяет или что?
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32879995
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...
Вы уж извините, но можно про массивы ещё раз, и по-русски?
И что не так в вышеприведённом скрипте?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880003
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вверну и я свои пять копеек :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#!/bin/sh

filename=/etc/passwd

IFS='
'
set `cat $filename`
len=`wc -l $filename | awk '{print $1}'`
echo $len

while [ "$len" -ne  0  ]
do
 len=`expr $len -  1 `
 echo $ 1 
 shift
done

настоящий массив.
если это не заработает - киньте в меня камень (не ниже P4)
:-)
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880005
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем сам топик - это исключительно одна строка

set `cat $filename`


:-)
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880072
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 --null--
Всё работает, но надо-то что бы каждой строке файла соответствовала РАЗНАЯ (с разным названием) переменная.... (var1, var2, var3 и т.д.)
То, что методов можно много разных придумать, это и сразу ясно было, но что-то до меня ни один не допирает...
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880112
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyaraХм...
Вы уж извините, но можно про массивы ещё раз, и по-русски?
И что не так в вышеприведённом скрипте?
Posted via ActualForum NNTP Server 1.1
А в скрипте, который я привел, что не так? Если ваш sh совместим с моим bash, то var[$i] должен содержать i-ю строку файла
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880131
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю как в bash запустить отладку, но при запуске выдаёт "command not found" Чего "not found", почему....
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880182
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyaraне знаю как в bash запустить отладку, но при запуске выдаёт "command not found" Чего "not found", почему....
Posted via ActualForum NNTP Server 1.1
bash наверное и not found. А ваш sh (у меня на него bash слинкован) такой синтаксис не допускает что-ли?
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880231
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем у меня
bash --vesrion выдает
Код: plaintext
1.
2.
GNU bash, version  2 .05a. 0 ( 1 )-release (i386-pc-linux-gnu)
Copyright  2001  Free Software Foundation, Inc.

Вот такой скрипт нормально работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#!/bin/bash

i= 0 ;
cat file.txt |
{
while read s
do
 let "i++"
 var[$i]=$s
done
lines=${#var[*]}
for (( i= 1 ; i<=lines; i++ ))
do
 echo line $i of $lines is:  ${var[$i]}
done
}
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880232
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не допускает... Жалуется на некорректную петлю в 10 строке
for (( i=1 ; i<=$n; i++ ))
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880242
Somebody2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lissyaraНет, не допускает... Жалуется на некорректную петлю в 10 строке
for (( i=1 ; i<=$n; i++ ))
Posted via ActualForum NNTP Server 1.1
Может bash попробовать поставить? Он в FreeBSD тоже должен быть
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880272
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРАЗНАЯ (с разным названием) переменная

$1, $2 etc - это не разные переменные? :-)
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880334
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конторольный вопрос: что покажет команда
echo $1
echo $2
в вышеприведённом скрипте если эти эхи разместить после "done"?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880343
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего хорошего :-)
...
Рейтинг: 0 / 0
скинуть файл построчно в переменные
    #32880355
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но это shift портит только в приведенном примере.
Не хотите - не используйте shift и обращайтесь по индексу

echo ${13}

и прочее.

это ничего не испортит.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скинуть файл построчно в переменные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]