Устройство смены носителя HP 1/8 G2 не обнаружено в Oracle Linux 8

Это может быть излишним, но вы можете получить это, используя read -e, который включает средство Readline в утилите read. В этот момент желаемый результат будет состоять только из привязки одной клавиши -.

Осторожно, однако, что Readline также содержит множество других функций, таких как завершение, история и т. д., которые вам могут не понадобиться для простого read my_variable. Если это нежелательно, вы должны явно очистить привязки клавиш -и отключить функции, которые вам не нужны для вашего read -e.

Пример доказательства -концепции -из командной строки -:

(bind 'TAB: accept-line'; IFS= read -re var && echo "$var" || echo ko)

Вы также можете сделать это в сценарии, хотя bindвыдаст предупреждение (, которое вы все равно можете отключить, перенаправив2>/dev/null).

Альтернативой командам bindв скрипте является предоставление пользовательского файла inputrc перед вызовом скрипта, на который вы хотите повлиять. Нет необходимости иметь настоящий файл, достаточно здесь документа.

Приведенный выше пример сделан с помощью скриптов:

#!/bin/bash

export INPUTRC=/dev/fd/3

script2.sh 3<

Приведенный выше сценарий подготавливает пользовательский файл inputrc в качестве документа «Здесь» в файле -с дескриптором 3, который интерпретатор script2.shбудет считывать, как указано в переменной окружения INPUTRC.

Тогдаscript2.sh:

#!/bin/bash

echo start
bind -q accept-line 2>/dev/null  # shows which keys are configured to accept input
IFS= read -re var && echo "$var" || echo ko
echo end

Перед ожиданием ввода на readскрипт напечатает что-то вроде:

accept-line can be invoked via "\C-i", "\C-j", "\C-m".

показывает, что Вкладка(т.е. Ctrl -I показано выше, так как\C-i)принимает строку точно так же, как Возврат(т.е. Ctrl -M , каретка -возврат )или новая строка(Ctrl -J).

Более "реальный" пример:

#!/bin/bash

bind 'TAB: accept-line' &>/dev/null

echo "enter your name:"
IFS= read -re var 

echo "your name is: $var"

Если вы пойдете по этому пути, ознакомьтесь с руководством пользователя Readline , по крайней мере, сокращенным в вашем man bash. Параметр set convert-meta offсреди прочих заслуживает особого упоминания, чтобы обеспечить лучшую поддержку символов ascii, отличных от -.

0
30.07.2021, 12:53
0 ответов

Теги

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