Executar script com argumento sim ou nao

1. Executar script com argumento sim ou nao

Erik P. Ghijs
Good_speed

(usa Debian)

Enviado em 14/08/2018 - 10:32h

Amigos, bom dia

Tenho script grande que preciso colocar sim ou não para executar a função, ate ai sem problema, eu preciso que quando eu escolher a opção não ele passe para próximo comando e assim por diante ate termina o script, alguém sabe como resolver isso?

Exemplo;

Digite sim para continuar com o comando ou não para próximo comando?
# ls -lha /etc

Digite sim para continuar com o comando ou não para próximo comando?
# lsblk

E assim por diante...

Grato,




  


2. Re: Executar script com argumento sim ou nao

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 14/08/2018 - 11:37h

Oi, tudo bem?

Veja uma idéia básica de como fazer:

1 - Ler a resposta do usuário com o comando read.

read resposta 


2 - Testar a resposta e executar o comando

 
[ $resposta = "sim" ] && ls


Tente adaptar e melhorar essa idéia para sua necessidade. Se ficar com dúvidas, poste seu código aqui...


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


3. Re: Executar script com argumento sim ou nao

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/08/2018 - 21:49h

Good_speed escreveu:

Amigos, bom dia

Tenho script grande que preciso colocar sim ou não para executar a função, ate ai sem problema, eu preciso que quando eu escolher a opção não ele passe para próximo comando e assim por diante ate termina o script, alguém sabe como resolver isso?

Exemplo;

Digite sim para continuar com o comando ou não para próximo comando?
# ls -lha /etc

Digite sim para continuar com o comando ou não para próximo comando?
# lsblk

E assim por diante...

Grato,



Boa Noite Good_Speed.
Segue sugestão:
#!/bin/bash

COLS=$(tput cols)
IC="\e[0;38;5;33m"
FC="\033[m"

INIC() {
tput clear
cmd=(date "cat /etc/passwd" "ls -lha" lsblk uptime)
for ((N=0;N<${#cmd[@]};N++));do
echo -e "\n$(LINE)\n"$IC" $((N+1))ª Pergunta"$FC"\n Executar o comando \"${cmd[$N]}\"\n Digite sim para continuar ou não para próximo comando?"
PERGUNTA
done
}

PERGUNTA() {
read -p " [S/N]: " -e -n1 RESP
echo -e "$(LINE)\n"
[[ $RESP != +(s|S|n|N) ]] && PERGUNTA || RESP

}

RESP() {
[[ "$RESP" =~ ^([Ss])$ ]] && { echo -e ""$IC"Saída do Comando ${cmd[$N]}$FC";${cmd[$N]};}
}

LINE() {
printf '%*s' "$COLS" '' | sed "s/ /—/g"
}

INIC

Att.:
Marcelo Oliver



4. Re: Executar script com argumento sim ou nao

Erik P. Ghijs
Good_speed

(usa Debian)

Enviado em 20/08/2018 - 09:05h

p4ulodi4s, bom dia

Muito obrigado pela resposta, ajudou muito...

p4ulodi4s escreveu:

Oi, tudo bem?

Veja uma idéia básica de como fazer:

1 - Ler a resposta do usuário com o comando read.

read resposta 


2 - Testar a resposta e executar o comando

 
[ $resposta = "sim" ] && ls


Tente adaptar e melhorar essa idéia para sua necessidade. Se ficar com dúvidas, poste seu código aqui...


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/





5. Re: Executar script com argumento sim ou nao

Erik P. Ghijs
Good_speed

(usa Debian)

Enviado em 20/08/2018 - 09:06h

msoliver, bom dia

Obrigado, pela sua ajuda...

msoliver escreveu:

Good_speed escreveu:

Amigos, bom dia

Tenho script grande que preciso colocar sim ou não para executar a função, ate ai sem problema, eu preciso que quando eu escolher a opção não ele passe para próximo comando e assim por diante ate termina o script, alguém sabe como resolver isso?

Exemplo;

Digite sim para continuar com o comando ou não para próximo comando?
# ls -lha /etc

Digite sim para continuar com o comando ou não para próximo comando?
# lsblk

E assim por diante...

Grato,



Boa Noite Good_Speed.
Segue sugestão:
#!/bin/bash

COLS=$(tput cols)
IC="\e[0;38;5;33m"
FC="\033[m"

INIC() {
tput clear
cmd=(date "cat /etc/passwd" "ls -lha" lsblk uptime)
for ((N=0;N<${#cmd[@]};N++));do
echo -e "\n$(LINE)\n"$IC" $((N+1))ª Pergunta"$FC"\n Executar o comando \"${cmd[$N]}\"\n Digite sim para continuar ou não para próximo comando?"
PERGUNTA
done
}

PERGUNTA() {
read -p " [S/N]: " -e -n1 RESP
echo -e "$(LINE)\n"
[[ $RESP != +(s|S|n|N) ]] && PERGUNTA || RESP

}

RESP() {
[[ "$RESP" =~ ^([Ss])$ ]] && { echo -e ""$IC"Saída do Comando ${cmd[$N]}$FC";${cmd[$N]};}
}

LINE() {
printf '%*s' "$COLS" '' | sed "s/ /—/g"
}

INIC

Att.:
Marcelo Oliver









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts