Оценка переменной чтения в той же строке в сценарии bash

Я пытаюсь получить значение этой команды в скрипте bash, но, похоже, ничего не возвращает

rr=$(read -p Enter -r) echo "Is $rr" read -p "java archive detected, Enter Y to download it again, N to continue $nl" -r if [[ $REPLY =~ ^[Yy]$ ]] && [[ $(read -p Enter -r) == "Y" ]]; then echo "Y entered $REPLY" break; elif [[ $REPLY =~ ^[Nn]$ ]]; then echo "java Archive was extracted successfully to $java8Dir $nl" fi 

  • Как автоматически устанавливать пакеты?
  • Bash завершает дополнительное пространство при добавлении каталога файлов
  • Скрипт Perl работает отлично в интерактивной оболочке, но не как задание cron
  • Эффективный таргетинг конкретного туннеля SSH из всех текущих?
  • grep для извлечения подстрок в строке
  • awk: разобрать и записать в другой файл
  • Регулярное выражение для соответствия числам с плавающей запятой в сценарии оболочки
  • Подстановка переменных grep и командной строки
  • 3 Solutions collect form web for “Оценка переменной чтения в той же строке в сценарии bash”

    Это потому, что вы выполняете read в подстановке команд ( $() ). В этом нет необходимости. Просто используйте:

     read -p Enter -r rr echo "Is $rr" 

    Синтаксис var=$(command) установит значение var в значение, возвращаемое command . read встроенного языка ничего не возвращает (кроме его статуса выхода, но это не имеет значения здесь), поэтому ваша переменная остается пустой. Синтаксис read read VAR и он устанавливает значение $VAR .

    правильный синтаксис для read

    [-s] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [имя … ]

    (от man bash )

    • первая строка может быть read -p Enter -r rr (вам действительно нужно unescape backslash?)
    • внутренний тест должен читать

       if ... && [[ "$(read -p Enter R ; echo $R )" == "Y" ]] ; tehn 

    Команда read -p Enter -r поместит значение типа пользователя внутри переменной $ REPLY (в Bash). Итак, это сработает:

     $ read -p Enter: -r Enter:hello $ echo "$REPLY" hello 

    поэтому, если вы хотите ввести пользователя в var rr, сделайте следующее:

     $ read -p "Enter: " -r rr Enter: hello $ echo "$rr" hello 

    Или, как одна строка:

     $ read -p "Enter: " -r rr; echo "$rr" Enter: hello hello 

    Все, что вам нужно сделать (в скрипте), чтобы прочитать переменную, а затем распечатать ее, это:

     read -p "Enter : " -r rr echo "Is $rr" 
    Interesting Posts

    Замена шаблона в строке, предшествующей другому интересующему образцу

    Завершение работы не работает

    Чтение цели символической ссылки и увеличение целевой

    Как создать безотказный скрипт отключения GUI Linux?

    Регистрация исходящих соединений по мере их возникновения

    Ошибка экспорта / импорта ZPool

    Как ssh на серверы по имени хоста без имени домена?

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

    tcpdump ждет секунды перед отображением пакетов

    Как добавить автозаполнение пути к пользовательской функции завершения в zsh?

    Установите NFS4-экспорт из Ubuntu на Mac OSX 10.11

    uuid, номер устройства и файл устройства для устройства

    Интерпретации интерпретации команд в кавычках как разделители аргументов

    в чем разница между `find .` и / home / user / * в качестве входа для команды

    Как я могу отфильтровать определенную часть ответа JSON в зольной оболочке

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