передача параметра в цикле while

#bash

#bash

Вопрос:

Я попытался добавить $ 1 к переменной, но это не сработало. это то, что у меня есть до сих пор. Должен ли я добавить что-нибудь еще к переменной, чтобы она работала

 #!/bin/bash
clear
dir=" "
MODEL="UNKNOWN : $1"
while [ "$MODEL" = "UNKNOWN" ]; do
    KIND="UNKNOWN"
    echo -n "Enter kind [x|y]: "
    read K
    UPPER="$(echo ${K}|tr 'a-z' 'A-Z')"
   case "$UPPER" in
        x) MODEL="x" ;;
        y) MODEL="y" ;;
    esac
 done

if [ "$MODEL" == "x" ]; then
    echo "Preparing to installation x applications...."
    cd hpcld
    dir="$(pwd)"
    echo $dir
    echo "./install_x.sh"
else
    echo "Preparing to installation y applications...."
    cd hbcb
    dir="$(pwd)"
    echo $dir
    echo "./install_y.sh"
fi
 

Комментарии:

1. Где вы используете переменную KIND ?

2. Можете ли вы дополнительно указать echo , какая строка вызывает проблему? Я просто не знаю, с чего начать помогать вам: echo "${MODEL}" после первого назначения, case "$UPPER" in где вы сравниваете это со строчными значениями, или я должен показать вам переменную ${PWD} ? Возможно, вы хотите MODEL=${1:-UNKNOWN} , но это будет работать только тогда, когда $1 есть x или y .

3. Я думаю, что это сработает

4. Я буду работать над этим и скоро обновлю его

5. что находится внутри $1 ? если предполагается, что это какая-то «модель», попробуйте MODEL="${1:-UNKNOWN}" ; рассмотреть typeset -u K; read -r -p "Enter kind [x|y]: " K (для замены echo/read/UPPER= кортежа) … тогда case "${K}" in ... , но также необходимо определить ваши случаи как UPPER , тоже => X)...;; Y)...;; ; Я бы также посоветовал отказаться от привычки использовать переменные с именами в верхнем регистре (переменные ОС прописные, и если вы не знаете всех переменных ОС, вы рискуете либо а) перезаписать системную переменную, либо б) ОС перезаписывает вашу переменную)