Смущает смысл интерактивной и неинтерактивной оболочки при запуске скрипта

В этом вопросе я прочитал следующее:

Оболочка, запускающая скрипт, всегда является неинтерактивной оболочкой, но сценарий может эмулировать интерактивную оболочку, предлагая пользователю вводить значения.

Я не знаю, правильно ли указано выше, я подумал, что следующее правильно:

  • Оболочка, запускающая скрипт, и этот скрипт позволяет вводить данные, это интерактивная оболочка (а не «эмуляция» интерактивной оболочки, например, цитата).

  • Оболочка, запускающая скрипт, и этот скрипт не позволяет вам вводить данные, это неинтерактивная оболочка.

Какое утверждение является верным?

2 Solutions collect form web for “Смущает смысл интерактивной и неинтерактивной оболочки при запуске скрипта”

Оболочка, запускающая скрипт, является неинтерактивной оболочкой.

Неинтерактивная оболочка все еще может использовать, например, read для чтения данных со стандартного ввода.

Если стандартный ввод является терминалом, это может обеспечить уровень «взаимодействия», но это не делает оболочку, выполняющую сценарий интерактивной оболочкой. Однако скрипт будет интерактивным.

Текст запутан, потому что он использует слово «интерактивный» для обозначения двух вещей:

  1. Оболочка, запущенная для выполнения сценария оболочки, не является интерактивной (в том смысле, что она не имеет контроля над заданиями, она не предоставляет подсказки по умолчанию и т. Д.). Это технический термин для типа оболочки, так же как «login shell» и «интерактивная оболочка».
  2. Действие получения данных по тому же самому сценарию может быть «интерактивным» (если не считать, например, канал или файл). Но опять же, любая команда, которая берет данные со стандартного ввода, может считаться интерактивной. tr 'az' 'A-Z' сам по себе «интерактивно» превращает все строчные символы ASCII в верхний регистр.

Напишите простой ниже сценарий vi non-intractive.sh .

 #!/bin/bash echo "Hello World!" 

сохраните его и запустите его bash non-interactive.sh ; это была оболочка bash запускавшая скрипт, и это была неинтерактивная оболочка.

Теперь напишите еще один простой скрипт vi interactive.sh .

 #!/bin/bash echo "Please input things:" read userinput echo "You input: $userinput!" 

сохраните его и запустите его bash interactive.sh , введите ввод и нажмите enter; это была оболочка bash запускавшая скрипт, это была интерактивная оболочка.

  • Замените iwgetid на iw
  • Чтобы получить журналы между конкретными метками времени вместе с датой, используя сценарий оболочки
  • df -k не показывает правильную точку монтирования
  • Как получить дескриптор файла, отличный от stdin stdout и stderr (чтобы сделать что-то вроде $ program 1> file_1 3> file_2)?
  • Возможно ли сделать scp сбоем, когда вы делаете локальную копию?
  • Отслеживать <defunct> для целей отладки?
  • Открытие сокета в Kali Linux с использованием сценариев bash
  • Команда «>» не работает только в встроенной Linux
  • Как работает этот скрипт svn?
  • Невозможно использовать переменную окружения Array
  • Что я могу узнать об этой части кода?
  • Interesting Posts

    Многострочные записи в файле кикстарта с использованием обратного слэша

    Как найти, какие изображения принадлежат тому / dev / loop?

    Netcat (nc6) – Минимальный IPv6 только TCP-сервер и клиент

    Как сохранить атрибуты файла Windows при копировании файлов в Linux?

    подключить файл к сценарию медленного процесса

    Ошибка ввода / вывода с использованием jmtpfs, не сохраняющего файл при копировании на устройство

    Почему .pam_environment не включает $ HOME в мой новый путь?

    Каков правильный способ стабильного управления терминалом bash?

    Обратная связь Symlink

    Как передать вывод скрипта команде ls без разделения данных?

    как фильтровать по звездочке или аналогичному выражению rsync в zsh

    Эмуляция изображения Большого Endian Basic Kernel

    Что происходит после загрузки образа ядра Linux в оперативную память

    Тайм-аут соединений IPv6

    Как просмотреть графическое представление приложения с помощью ssh

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