Bash: докато четете ред

Bash While Read Line



Когато работите върху bash скриптове, понякога може да се наложи да четете файл ред по ред. Нека обясним с пример. Имате някои данни в текстов файл, които трябва да бъдат изпълнени или обработени с помощта на скрипт. Така че изпълнението на bash скрипт за обработка на текстов файл е много различно. Трябва да следвате определен синтаксис, за да прочетете файл ред по ред. Тази статия ще ви помогне да прочетете ред от файл, като използвате цикъла while в Bash.

Основен синтаксис на реда за четене

Следният синтаксис се използва за bash shell за четене на файл с помощта на while цикъл:







докато Прочети -rлиния;
направете
изхвърлен '$ ред';
Свършен <input.file

Опцията „-r“ в гореспоменатия синтаксис е предадена за команда за четене, която избягва интерпретирането на обратната наклонена черта. Опцията „input_file“ представлява името на вашия файл, до който искате да получите достъп, като използвате командата „read“.



Вътрешният разделител на полета, съкратен като IFS, може да се използва, преди командата за четене да е зададена на нулев низ, който предотвратява изрязването на предните или задните интервали.



докато IFS=Прочети -rлиния;
направете
изхвърлен $ ред;
Свършен <input.file

Отворете терминала, като използвате клавишната комбинация Ctrl + Alt + t и след това изпълнете следните команди върху него.





Пример # 1: Четене на файл ред по ред

Нека вземем пример, в който да предположим, че имаме файл с име OS.txt, съдържащ имената на всички важни дистрибуции на Linux. Ако искате да прочетете файл, без да използвате командата „cat“, тогава за тази цел можете да изпълните следната команда, за да изпълните конкретната задача. Ще използваме цикъла while, който ще чете всеки ред от файла OS.txt и съхранява съдържанието във всяка стъпка в променлив ред $, който можете да покажете по -късно.

Поставете следните имена на дистрибуции на Linux в OS.txt



CentOS
Ubuntu
Debian
LinuxMint $докато Прочетилиния;
направете
изхвърлен $ ред;
Свършен <OS.txt


От горната команда ще получите следния отговор в прозореца на терминала:

Пример # 2: Четене на файл с помощта на bash скрипт

Създайте bash файл и след това добавете кода по-долу в този файл, за да прочетете съдържанието на файла. Можете да съхранявате предишния текстов файл в нова променлива $ filename и променлива $ n се използва за запазване на стойността на всеки ред. Сега, използвайки цикъла while, ще четем всеки ред от файл с определен номер на ред.

#!/bin/bash
име на файл='OS.txt'
н=1
докато Прочетилиния;
направете
# за четене на всеки ред
изхвърлен „Линия за разпределение на операционната система №.$ n:$ ред'
н= $((n+1))
Свършен < $ име на файл

Запишете файла с име OSinfo.sh и въведете следната команда на терминала, за да изпълните горния bash скрипт.

$башOSinfo.sh

Сега изпълнете командата cat, за да видите оригиналното съдържание на файла.

$коткаOS.txt

Алтернативен метод за четене на файлове

Използване на предаване на име на файл от команда

В bash файл трябва да добавите следния скрипт за код. В този скрипт трябва да вземем името на файл като аргумент. Първо, стойността на аргумент се чете от променлива $ 1, която има име на файл за четене. Той ще провери дали името на файла съществува на посоченото място, след което използва цикъла while чете файл по ред, подобен на предишния пример.

#!/bin/bash
име на файл=$ 1
докато Прочетилиния;направете
# четене на всеки ред
изхвърлен $ ред
Свършен < $ файл.текст

Запазете горния скрипт с име „Readline.sh“ и изпълнете следната команда на терминала, за да изпълните гореспоменатия скрипт:

В горния изход ще забележите, че файлът „OSinfo.txt“ преминава като аргумент и съдържанието на „OSinfo.txt“ ще се покаже след премахване на допълнителни интервали. Можете да покажете оригиналното съдържание на файла, като стартирате „cat OSinfo.txt“.

Заключение

В тази статия ние обсъдихме как да четем редове, използвайки цикъла while в програмирането на bash. Ние сме внедрили различни методи, използвайки bash скрипта или можете просто да използвате текстов файл, за да извършите четене на файл ред по ред задача. Ако се интересувате да научите повече примери, използвайки гореспоменатия синтаксис, можете да изпълните и във вашата система. Надявам се, че този урок ви е харесал и би бил уникален за вас. Нека знаем в случай на грешка.