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

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" 
  • Как перенаправить unzip -v вывод в файл журнала в сценарии оболочки
  • Как скрипт с systemd-cgtop?
  • UNIX - команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце
  • Несколько логических операторов, ((A || B) && C) и «синтаксическая ошибка вблизи неожиданного токена»
  • Использование исходной команды bash возвращает ошибку, хотя она успешно прочитала конфигурационный файл
  • Почему я получаю разные результаты при запуске моего shellscript вручную, когда я запускаю его с помощью cron?
  • переменная оболочки в awk не передается всем строкам, а только для самой первой строки ввода?
  • запустить команду по скрипту в алфавитном порядке
  • Спросить имя хоста в сценарии оболочки?
  • Преобразование json-объекта сопоставления в управляемую строку csv с использованием сценария bash
  • Сценарий Bash - обратная строка
  • Как заставить мой скрипт bash создать файл журнала для clamscan, выполняющегося в cron?
  • Linux и Unix - лучшая ОС в мире.