Не понимая значения интерактивной и неинтерактивной оболочки при запуске сценария

Вы можете сделать это, например, с помощью awk. Переменные $ 1 и $ 2 содержат текст столбцов, а NR содержит количество столбцов.

awk '
    NR == 1 {print "Only one column: " $1}
    NR == 2 {print "The sum of the two columns is", $1 + $2}
'
1
23.09.2017, 18:49
1 ответ

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

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

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

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

  1. Оболочка, которая была запущена для выполнения сценария оболочки, не является -интерактивной (в том смысле, что у нее нет контроля над заданиями, она сама по себе не выдает подсказку по умолчанию и т. д. и т. д. ). Это технический термин для типа оболочки, такой же, как «оболочка входа» и «интерактивная оболочка».
  2. Действие по сбору данных этим же сценарием может быть «интерактивным» (, если не происходит чтение, например, из. трубка или напильник ). Но опять же, любую команду, которая берет данные из стандартного ввода, можно назвать интерактивной. tr 'a-z' 'A-Z'сам по себе «интерактивно» превратит все строчные символы ASCII в прописные.
3
27.01.2020, 23:44

Теги

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