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

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

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

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

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

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

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

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 запускавшая скрипт, это была интерактивная оболочка.

  • Почему эхо игнорирует мои кавычки?
  • Что такое расщепление слов? Почему это важно в программировании оболочки?
  • Как понять порядок между расширениями?
  • делает головной вход> вывод копирует все невидимые символы в новый файл?
  • Как выводить строки, разделенные запятыми, используя расширение brah brace
  • Порядок выполнения с несколькими командами
  • Поплавковые операции с bc неточны?
  • Разница между скобками и фигурными скобками в терминале?
  • Как использовать переменную как часть имени массива
  • Скрытие командных сообщений в сценарии командной оболочки
  • rsync с использованием функции args
  • Interesting Posts

    Акцентированные персонажи перестали работать на французской каннадианской клавиатуре

    Mysql 100% 1 загрузка центрального процессора

    установка на загрузку – как редактировать

    Справочная документация по настройкам групп (групп управления)

    Создание скрипта, который перезапускает USB-устройства

    Ядро: pci 0000: 7f: 12.4: BAR 3: не удалось назначить

    Есть ли в любом случае прогноз «Нет места на устройстве» для btrfs, который происходит задолго до того, как устройство будет заполнено?

    Как использовать daemonize, чтобы всегда поддерживать мой процесс tomcat?

    tar не подчиняется –exclude-vcs

    Перегрев ноутбука с использованием драйвера AMD / ATI с открытым исходным кодом

    Нет интернет даже с iptables ПРИНИМАЕТ все

    Запустить приложение SWT после запуска системы

    Как получить Evolution для запуска в VNC на Debian / Wheezy (или позже)?

    Почему ln -s создает относительные сломанные ссылки?

    Лучшие варианты установки жесткого диска Mac OS X на моем Linux-боксе?

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