#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)...;;
; Я бы также посоветовал отказаться от привычки использовать переменные с именами в верхнем регистре (переменные ОС прописные, и если вы не знаете всех переменных ОС, вы рискуете либо а) перезаписать системную переменную, либо б) ОС перезаписывает вашу переменную)