Вопрос об интерактивном обнаружении в bash

У меня вопрос об интерактивном обнаружении в bash.

Следующий скрипт печатает, если он вызывается в интерактивном режиме или нет.

$ cat int.sh #!/bin/bash if [ -t 0 ]; then echo "interactive" else echo "not interactive" fi 

Некоторые примеры вызова …

 $ ./int.sh interactive $ echo toto | ./int.sh not interactive $ ./int.sh < ./int.sh not interactive $ ./int.sh <<EOF > hello world! > EOF not interactive 

Но почему результат является интерактивным для следующего случая?

 $ ./int.sh <( cat ./int.sh ) interactive 

One Solution collect form web for “Вопрос об интерактивном обнаружении в bash”

Оператор <(...) в bash – это замещение процесса . Процесс в <(...) выполняется с его вводом или выводом, подключенным к FIFO или некоторому файлу в /dev/fd . См. Его:

 echo <(echo foo) 

Он печатает что-то вроде /dev/fd/63 . Это файловый дескриптор. Затем часть <(...) заменяется этим файловым дескриптором. Поэтому в вашем заявлении вызов будет, например:

 ./int.sh <( cat ./int.sh ) 

Заменяется на:

 ./int.sh /dev/fd/63 

Таким образом, это просто аргумент скрипту ./int.sh , который все еще называется интерактивно.

  • Unix без / dev / stdin, / dev / stdout и / dev / stderr?
  • Как программы с программным обеспечением с оболочкой уравновешивают скорость вывода / ввода?
  • Bash, имя файла stdin?
  • Может ли оболочка предупредить меня, если программа ждет стандартного ввода?
  • Сценарий Bash, который считывает имена файлов из канала или из командной строки args?
  • Где фактически передаются аргументы командной строки (например, «some.text»)?
  • Как фильтровать stdout программы через grep, все еще контролируя программу?
  • Как перенаправить STDIN фонового процесса?
  • file (1) завершение команды при использовании опции -f -
  • Как расколоть stdin в несколько многострочных строк и поместить каждый из них в разные переменные bash
  • Как превратить весь stdin в аргумент командной строки дословно?
  • Как перенаправление файлов bash на стандарт отличается от shell (`sh`) в Linux?
  • Interesting Posts

    Гость Oracle Linux 6.1 на Virtualbox 4.1 не может подключиться к сети

    Какова фактическая цель опции -X GNU grep и почему она недокументирована?

    Где указан параметр PageWriteback в исходном файле ядра 4.9 Linux?

    Ошибка установки (установка системы) – Kali Linux

    Как принудительно установить set -o pipefail при сбое первой команды в трубе

    Как передать параметры из% prep в% build?

    использование команды sed для замены имен пробелами

    Два монитора. Панель меню на неправильном экране

    Восстановление по умолчанию наложения в gentoo

    Softlink в rc0.d работает над poweron, а не выключается

    Проблемы при установке Fedora 19

    Исключая некоторые из команд, которые хранятся в истории bash

    Есть ли способ раскрасить вывод на поток из программы

    Как получить все виды зависимостей обратного пакета: зависящий от реверса момент для не-Ubuntu-дистрибутивов

    Случайное удаление содержимого / etc / fstab в Centos 7.2

    Linux и Unix - лучшая ОС в мире.