msoliver
(usa Debian)
Enviado em 10/02/2017 - 19:30h
yuttttttt escreveu:
msoliver escreveu:
yuttttttt escreveu:
msoliver escreveu:
yuttttttt escreveu:
msoliver escreveu:
Funcionou aqui . . .
#!/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
marcelo oliver
Cara assim deu certo, me explique esse %02d, o que é? e também se eu colocar %01d vai para uma casa, e se chegar em 10? como o bash tratará isso?
Justamente, o printf "%02d" 5
05
Imprime o nº com dois digitos . . .
Para ignorar o Nº de digitos, use o formato %s,
printf "%s" 5
5
SEpreferir, substitua o "printf" pelo "echo":
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")
Precisando, estou por aqui . . .
Se a resposta foi satisfatória/esclarecedora, . . . MARQUE o tópico como resolvido, e, se gostou da minha "solução", Marque a minha resposta como a melhor . . . . Dessa forma sou pontuado, o que incentiva a continuar compartilhando o conhecimento . . .
Att.:
marcelo oliver.
Quando mudo para echo e digito 1 por exemplo, recebo esse erro:
./case-dinamico.sh: eval: line 14: erro de sintaxe proximo do `token' não eperado `2'
e preciso que seja echo para eu conseguir percorrer o array no for
Segue alteração com o "echo"
CASE=$(n=0;echo 'case $resposta in' ;for op in $(ls -1);do let n++; echo "$n) echo -e \" A OPÇãO ESCOLHIDA, é: $n\n\" ;;";done;echo -e "*) AJUDA ;;\nesac\n")
Consegui agora percorrer o array e deu tudo certo, valeu pela ajuda, tava morrendo de tanto procurar como fazer isso já kkkk.
Só mais uma coisa,
01 porque tenho que colocar \""\ antes da variável para funcionar?
02 o que é isso?
03 e o eval faz exatamente o que?
dei uma pesquisada e li que eval tem que ser cuidadosamente utilizado para não causar problemas de segurança,
04 que falhas de segurança poderiam ocorrer pelo uso do eval?
Cara, era só mais "UMA" coisa, foram 04 . . . . . Rsrsrsrsrsr
01- uso o \$ é necessario, neste caso para que a VAR não seja resolvida nesse "echo", do mesmo modo, no 1º echo da var CASE usei aspa simples . . . .
02 - A "
\" é usada para "escapar" o caracter, para que o mesmo seja interpretado literalmente
03 - Exemplo do eval:
echo "echo -e \" Se nao usar o eval, o 2º \"echo\" não é EXECUTADO\n MULTIPLICAÇãO:\n 5 x 5 = \$((5*5))\""
echo -e " Se nao usar o eval, o 2º "echo" não é EXECUTADO\n MULTIPLICAÇãO:\n 5 x 5 = $((5*5))"
eval $(echo "echo -e \" Se nao usar o eval, o 2º \"echo\" não é EXECUTADO\n MULTIPLICAÇãO:\n 5 x 5 = \$((5*5))\"")
Se nao usar o eval, o 2º echo não é EXECUTADO
MULTIPLICAÇãO:
5 x 5 = 25
4 - Qquer comando utilizado erroneamente, pode causar danos . . .
Só uma "coisinha" . . . .
Marque a resposta como a melhor....
marcelo oliver