Bash - множественный выбор, пользовательский ввод - PullRequest
0 голосов
/ 18 июня 2019

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

Я уже пытался протестировать, но имел синтаксическую ошибку рядом с неожиданным токеном `newline '

> echo "Name? Use, alphabetic letter from multiple choice. 
a)Donald
b)Alan 
c)Brian"

  read -p "Insert appropriate letter a, b or c" don ala br

  echo "Perfect" $don 
  echo "Perfect, OK" $ala 
  echo "Perfect, Nice" $br

  case "$dev" 
  echo "OK" 
  esac

Я хотел бы нажать букву и ввести впоследствии перейти к делу, где определить параметры для профиля. Я столкнулся с ошибкой ниже: синтаксическая ошибка рядом с неожиданным токеном `newline '

Ответы [ 2 ]

1 голос
/ 18 июня 2019

select обычно используется для меню командной строки.Обычно он ожидает только один ответ, но вы можете настроить его, например, следующим образом:

#! /bin/bash

names=(Donald Alan Brian)
selected=()
PS3='Name? You can select multiple space separated options: '
select name in "${names[@]}" ; do
    for reply in $REPLY ; do
        selected+=(${names[reply - 1]})
    done
    [[ $selected ]] && break
done
echo Selected: "${selected[@]}"
0 голосов
/ 18 июня 2019

Ваша текущая команда чтения пытается разделить ввод на 3 слова, назначая каждому фрагменту одно из don, ala, br. Вы просто хотите прочитать одно слово и сравнить его с каждым из a, b или c. Вы можете сделать это с помощью оператора case:

read -p "Insert appropriate letter a, b, or c" choice

case $choice in
  a) echo "Perfect $choice" ;;
  b) echo "Perfect, OK $choice" ;;
  c) echo "Perfect, Nice $choice" ;;
  *) echo "Unrecognized selection: $choice" ;;
esac
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...