Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Переменные и циклы  (Прочитано 671 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dmitriy Klim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Переменные и циклы
« : 18 Декабря 2015, 13:40:26 »
Всем, привет.
Я новичок в программировании,поэтому прошу мудрых знатоков помочь в решении такой проблемы.
Скрипт на Bash, версия 3.1.17
Стоит задача:
Написать цикл, результатом работы которого будет 4 переменные с присвоенными значениями. Значения берутся из файла user.txt Т.е. после окончания цикла в скрипте должны быть переменные $var1 $var2 $var3 $var4 с присвоеными значениями, чтоб их можно было дальше использовать.
Прошу по возможности подробно описать ответ. ))
И заранее всем огромное спасибо! =)))
« Последнее редактирование: 18 Декабря 2015, 13:55:50 от Dmitriy Klim »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #1 : 18 Декабря 2015, 14:04:42 »
Значения берутся из файла user.txt
В каком виде представлены данные в файле (построчно, через пробел, …)? А лучше приведите сам файл.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dmitriy Klim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #2 : 18 Декабря 2015, 14:14:57 »
Значения берутся из файла user.txt
В каком виде представлены данные в файле (построчно, через пробел, …)? А лучше приведите сам файл.

Благодарю за желание помочь. =))

Данные в файле находятся в столбце

ivanov
ivan
ivanovich
123456789

Сам файл тут: http://www.ex.ua/264129617526

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #3 : 18 Декабря 2015, 14:26:59 »
mapfile -t var <user.txtПеременные (массив) будут вида ${var[0]}...${var[3]}
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dmitriy Klim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #4 : 18 Декабря 2015, 14:30:22 »
mapfile -t var <user.txtПеременные (массив) будут вида ${var[0]}...${var[3]}

Может задам глупый вопрос но массив должен быть в цикле?
Может вы можете привести пример реализации?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #5 : 18 Декабря 2015, 14:37:32 »
Я Вам и привел пример реализации без циклов(видимых). Приложение mapfile этим и занимается, что каждую строку заносит (в цикле) в указанный массив нумеруя элементы по порядку. Если Вам надо только 4 элемента (потому как в оригинальном файле 5 строк), то поставьте ограничениеmapfile -t -n4 var <user.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Punko

  • Гость
Re: Переменные и циклы
« Ответ #6 : 18 Декабря 2015, 14:38:51 »
mapfile is one of the two builtin commands primarily intended for handling standard input
 (the other being read). mapfile reads lines of standard input and assigns each to the elements of an indexed array.

То есть, массив задаётся в файле, который считывается построчно и каждой переменной, имя которой вы задаёте (в данном случае var)  присваиваются значения строки.
При обнаружении новой строки переменная имеет вид var(i), где i - номер строки в файле.
параметр -t, насколько я понимаю, не позволяет присвоить переменной пустую строку.

Оффлайн Dmitriy Klim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #7 : 18 Декабря 2015, 14:41:10 »
Я Вам и привел пример реализации без циклов(видимых). Приложение mapfile этим и занимается, что каждую строку заносит (в цикле) в указанный массив нумеруя элементы по порядку. Если Вам надо только 4 элемента (потому как в оригинальном файле 5 строк), то поставьте ограничениеmapfile -t -n4 var <user.txt

Спасибо, я попробую  =))

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #8 : 18 Декабря 2015, 15:14:01 »
параметр -t, насколько я понимаю, не позволяет присвоить переменной пустую строку.
Строка — это набор символов, оканчивающихся переводом строки («\n»). По умолчанию перевод строки включается в переменную, а с параметром -tисключается.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Punko

  • Гость
Re: Переменные и циклы
« Ответ #9 : 18 Декабря 2015, 15:18:44 »
Строка — это набор символов, оканчивающихся переводом строки («\n»). По умолчанию перевод строки включается в переменную, а с параметром -tисключается.
Спасибо, буду знать теперь точно.

Оффлайн Dmitriy Klim

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Переменные и циклы
« Ответ #10 : 19 Декабря 2015, 19:47:59 »
Урааа! Все получилось.
Azure, спасибо большое за помощь.

 

Страница сгенерирована за 0.094 секунд. Запросов: 23.