apt не работает после попытки обновления и установки без интернета

Сценарий считывает пары строк из двух файлов. На каждой итерации он считывает строку из file11в lineAи из file22в lineB. Он делает это до тех пор, пока не встретит конец любого файла. Тело цикла выводит две строки и пустую строку.

означает «подключить/перенаправить стандартный ввод из file11в эту команду», где «эта команда» — это цикл while. Это также могло быть написано 0.

Стандартным вводом является файловый дескриптор номер 0. Файловые дескрипторы 1 и 2 зарезервированы для стандартного вывода и стандартных потоков ошибок.

3означает «подключить файловый дескриптор 3 к file22для этой команды». Число 3 является следующим «свободным» номером файлового дескриптора, но в коде вместо этого можно было использовать 4 или 5 или любое небольшое целое число, отличное от 0, 1 и 2 (ограничение количества используемых файловых дескрипторов зависит от того, что используется оболочка, но гарантированно работают числа до 9 ).

В цикле read lineAбудет читать строку из стандартного ввода по умолчанию, т.е. из файлаfile11(стандартный ввод наследуется от цикла ). Это также могло быть написано read lineA <&0.

С помощью read lineB <&3команда readчитает из дескриптора файла 3, т.е.из file22, а не из стандартного ввода (дескриптор файла 3 доступен в цикле, точно так же, как стандартный ввод ).

Вкратце, он использует стандартный входной поток и «дополнительный» файловый дескриптор (номер 3 )для чтения из двух файлов «одновременно» (строки за раз из каждого файла по очереди ). Обычно у пользователя есть доступ только к одному входному потоку , но это обходит это ограничение, явно создавая второй входной поток и подключая его к файлу file22.

Связанные:


Я использую слово «строка» выше, а не «строка». В вещах, прочитанных из двух файлов, будут удалены пробелы по бокам, а некоторые escape-последовательности будут интерпретированы особым образом.

Чтобы прочитать строку с помощью read, используйте

IFS= read -r varname

Связанные:

2
23.07.2021, 15:03
0 ответов

Теги

Похожие вопросы