Оценка переменной чтения в той же строке в сценарии 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 

  • cmd2 `cmd1` vs cmd1 | xargs cmd2
  • как правильно экспортировать имя зарегистрированного пользователя?
  • Есть ли способ найти процесс (или, по крайней мере, существование процесса) с помощью рабочего каталога?
  • Команда запуска / остановки в терминале без вмешательства человека?
  • linux периодический скрипт проверки системы или утилита
  • Запустите файл .sh вместо его открытия.
  • Awk - выводит вторую строку из нескольких файлов .dat в один файл
  • Как изменить / исправить команду v меньше, используя профиль оболочки?
  • 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

    Мышь Bluetooth перестает работать через несколько секунд (проблема NetworkManager)

    Удалить команду dig в centos 6?

    Не удалось запустить сервер базы данных MariaDB после обновления до debian 9

    Как печатать метаданные файла с помощью командной строки?

    Отправка сигнала в родительский процесс

    Настройка теста Samba только с одним физическим ящиком

    Как сделать + работать в регулярных выражениях sed на FreeBSD?

    Скопируйте оба буфера обмена X11 из vim

    MongoDB «сервис» на чистом Redhat не может быть запущен

    есть ли способ использовать регулярное выражение с способностью?

    Как я могу узнать, какая программа обращается к mysql?

    Может ли кто-нибудь объяснить вывод mount?

    Как я могу обработать ловушку SIGINT с приглашением пользователя в сценарии оболочки?

    Могу ли я создать символическую ссылку, которая будет игнорировать подкаталоги?

    Измените одну часть имени более 1000 файлов

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