Enviado em 10/02/2017 - 13:59h
Você tem apenas dois casos de seleção. Sendo assim, por que usar case? Seria melhor testar com if, porque as substituições seriam mais diretas.
Enviado em 10/02/2017 - 13:59h
Enviado em 10/02/2017 - 14:03h
Enviado em 10/02/2017 - 14:19h
while true
do
read resposta
case $resposta in
$numero[$i])$comando[$i]
break
;;
*)opção errada
;;
esac
done
#!/bin/bash
OPCOES=$(echo 'case $1 in';for op in $(egrep -o '^script[0-9]{2}' $0);do echo "$op) $op ;;";done;echo -e '*) AJUDA ;;\nesac')
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
eval $(echo "$OPCOES")
}
AJUDA() {
echo -e "\n$C OPÇÕES DISPONíVEIS:\n\n$(egrep '^script|^#[A-Z]' $0|sed '$!N;s/() {\n/ =>/;s/^\|#\|_/ /g')$F\n"
}
script01() {
echo -e "\nCOMANDOS DO \"script01\"\n"
}
#DESCRIÇÃO_DO SCRIPT_01
script02() {
echo -e "\nCOMANDOS DO \"script02\"\n"
}
#DESCRIÇÃO_DO SCRIPT_02
script03() {
echo -e "\nCOMANDOS DO \"script03\"\n"
}
#DESCRIÇÃO_DO SCRIPT_03
script04() {
echo -e "\nCOMANDOS DO \"script04\"\n"
}
#DESCRIÇÃO_DO SCRIPT_04
script05() {
echo -e "\nCOMANDOS DO \"script05\"\n"
}
#DESCRIÇÃO_DO SCRIPT_05
INICIO $1
opcoes=$(echo 'conta=0;case $resposta in';for op in ${array_arquivos[@]};do echo "$conta)$conta ;;" let conta=$conta+1;done;echo -e '*) inexistente ;;nesac')
read resposta
eval $(echo "$opcoes")
#erro:
./casedinamico.sh: eval: line 18: erro de sintaxe próximo do `token' não esperado `)'
./casedinamico.sh: eval: line 18: `conta=0;case $resposta in ) ;; let conta=+1 ) ;; let conta=+1 ) ;; let conta=+1 ) ;; let conta=+1 *) inexistente ;; esac' Enviado em 10/02/2017 - 14:23h
while true
do
read resposta
case $resposta in
$numero[$i])$comando[$i]
break
;;
*)opção errada
;;
esac
done
#!/bin/bash
OPCOES=$(echo 'case $1 in';for op in $(egrep -o '^script[0-9]{2}' $0);do echo "$op) $op ;;";done;echo -e '*) AJUDA ;;\nesac')
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
eval $(echo "$OPCOES")
}
AJUDA() {
echo -e "\n$C OPÇÕES DISPONíVEIS:\n\n$(egrep '^script|^#[A-Z]' $0|sed '$!N;s/() {\n/ =>/;s/^\|#\|_/ /g')$F\n"
}
script01() {
echo -e "\nCOMANDOS DO \"script01\"\n"
}
#DESCRIÇÃO_DO SCRIPT_01
script02() {
echo -e "\nCOMANDOS DO \"script02\"\n"
}
#DESCRIÇÃO_DO SCRIPT_02
script03() {
echo -e "\nCOMANDOS DO \"script03\"\n"
}
#DESCRIÇÃO_DO SCRIPT_03
script04() {
echo -e "\nCOMANDOS DO \"script04\"\n"
}
#DESCRIÇÃO_DO SCRIPT_04
script05() {
echo -e "\nCOMANDOS DO \"script05\"\n"
}
#DESCRIÇÃO_DO SCRIPT_05
INICIO $1
opcoes=$(echo 'conta=0;case $resposta in';for op in ${array_arquivos[@]};do echo "$conta)$conta ;;" let conta=$conta+1;done;echo -e '*) inexistente ;;nesac')
read resposta
eval $(echo "$opcoes")
#erro:
./casedinamico.sh: eval: line 18: erro de sintaxe próximo do `token' não esperado `)'
./casedinamico.sh: eval: line 18: `conta=0;case $resposta in ) ;; let conta=+1 ) ;; let conta=+1 ) ;; let conta=+1 ) ;; let conta=+1 *) inexistente ;; esac' Enviado em 10/02/2017 - 15:17h
Enviado em 10/02/2017 - 15:30h
#!/bin/bash
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; printf "%02d) ls -l %s ;;\n" $n $op ;done;echo -e "*) AJUDA ;;\nesac\n")
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
read -p " ESCOLHA UMA OPÇãO: " resposta
eval $(echo "$CASE")
}
AJUDA() {
echo -e "\n$C OPÇãO INVáLIDA$F\n"
}
INICIO
Enviado em 10/02/2017 - 15:32h
#/bin/bash
# ...
unset comando_a_rodar
for ((i=0; i<${#numero[@]}; i++)) do
# A comparação abaixo usa igualdade absoluta. Você pode fazer comparação
# com padrões (como case) ou com regexps, trocando o '=' por '==' ou '=~'.
if [[ "$resposta" = "${numero[$i]}" ]]; then
comando_a_rodar="${comando[$i]}"
break
fi
done
if [[ -n "$comando_a_rodar" ]]; then
$comando_a_rodar
else
echo "Opção errada" >&2
fi
# ...
declare -A valor_comando
valor_comando[pera]="echo 1"
valor_comando[uva]="ls -la"
valor_comando[maca]="echo \"Jobs is dead.\""
echo -n "Pera, uva ou maca? "
read resposta
if [[ -n "${valor_comando[$resposta]}" ]]; then
${valor_comando[$resposta]}
else
echo "Opção inválida." >&2
fi
Enviado em 10/02/2017 - 15:49h
case $reposta in
1)
;;
2)
;;
3)
;;
...
100)
;;
*)
;;
case $reposta in
1)
;;
2)
;;
3)
;;
*)
;;
Enviado em 10/02/2017 - 16:05h
case $reposta in
1)
;;
2)
;;
3)
;;
...
100)
;;
*)
;;
case $reposta in
1)
;;
2)
;;
3)
;;
*)
;;
Enviado em 10/02/2017 - 16:41h
#!/bin/bash
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; printf "%02d) ls -l %s ;;\n" $n $op ;done;echo -e "*) AJUDA ;;\nesac\n")
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
read -p " ESCOLHA UMA OPÇãO: " resposta
eval $(echo "$CASE")
}
AJUDA() {
echo -e "\n$C OPÇãO INVáLIDA$F\n"
}
INICIO
Enviado em 10/02/2017 - 17:01h
#!/bin/bash
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; printf "%02d) ls -l %s ;;\n" $n $op ;done;echo -e "*) AJUDA ;;\nesac\n")
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
read -p " ESCOLHA UMA OPÇãO: " resposta
eval $(echo "$CASE")
}
AJUDA() {
echo -e "\n$C OPÇãO INVáLIDA$F\n"
}
INICIO
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; echo "$n) ls -l $op ;;\n";done;echo -e "*) AJUDA ;;\nesac\n")
Enviado em 10/02/2017 - 17:21h
#!/bin/bash
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; printf "%02d) ls -l %s ;;\n" $n $op ;done;echo -e "*) AJUDA ;;\nesac\n")
C="\x1B[0;38;5;156m"
F="\x1B[m"
INICIO() {
read -p " ESCOLHA UMA OPÇãO: " resposta
eval $(echo "$CASE")
}
AJUDA() {
echo -e "\n$C OPÇãO INVáLIDA$F\n"
}
INICIO
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; echo "$n) ls -l $op ;;\n";done;echo -e "*) AJUDA ;;\nesac\n")
./case-dinamico.sh: eval: line 14: erro de sintaxe proximo do `token' não eperado `2'
Entre na sua conta para responder.