bash: использовать разные входные потоки для условия и тела цикла

Написать

ls -l

И вы увидите что-то вроде:

drwxrwxr-x  3 username username     4096 lip 28 01:20 filename.txt

Значения, конечно, могут отличаться, и, вероятно, будет много таких строк для разных файлов. То, что вы ищете, это информация drwxr...., которая говорит вам о разрешениях.

Здесь у вас есть их значения.

4
09.12.2019, 18:56
1 ответ

Использование отдельного файлового дескриптора для команды read— хорошее решение.

Вам гарантировано, что файловые дескрипторы от 3 до 9 будут доступны для этого. Оболочка не будет использовать их ни для чего другого. Только файловые дескрипторы 0, 1 и 2 имеют предопределенное использование, и вы можете обнаружить, что использование дескрипторов со значениями больше 9 работает, но такой гарантии нет.

Стандарт POSIX гласит:

Open files are represented by decimal numbers starting with zero. The largest possible value is implementation-defined; however, all implementations shall support at least 0 to 9, inclusive, for use by the application. These numbers are called "file descriptors". The values 0, 1, and 2 have special meaning and conventional uses and are implied by certain redirection operations; they are referred to as standard input, standard output, and standard error, respectively.

Использование файловых дескрипторов выше 9 может быть опасным, в зависимости от того, какой номер и оболочку вы используете:

  • bashвнутри использует fd 255.
  • zsh, dashи pdkshиспользуют внутри себя fd 10.
  • ksh93использует fd 3 (, но это похоже на ошибку, она связана с каталогом, который служит точкой монтирования текущей файловой системы ).
3
27.01.2020, 20:57

Теги

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