msoliver
(usa Debian)
Enviado em 25/02/2016 - 20:52h
gabrielscorpion escreveu:
Pessoal, precisar criar uma checkbox em shell script mas sem utilizar zenity, dialog ou algo relacionado a isso.
Preciso criar no puro shell mesmo. Tipo assim:
1) [ ] Opção 1
2) [ ] Opção 2
3) [ ] Opção 3
4) [ ] Opção 4
Pra ter uma uma ideia melhor consegui observar isso no script do AUI, que é um script de instalação para o Arch Linux.
Esse script contem o que eu quero, que é um checkbox conforme for escolhendo as opção. Link
https://github.com/helmuthdu/aui
Porem é um pouco complexo :/
Gostaria de saber se alguem pode me ajudar com algo parecido. abraços
---------------------------------------------
Boa noite gabrielscorpion.
Adaptei o MENU que utilizo em meus scripts, para a sua necessidade,
Detalhe :
Centraliza no terminal, para isso, exige tamanho mínimo de 30 LINHAS X 60 COLUNAS.
Na realidade, a largura mínima é de 52 colunas, deixei 04 de cada lado ....(mínimo)
Para alterar a cor do menu, troque a VAR "
ICOR="\e[0;38;5;226m" "
Para
SAIR , Opção_04, X ou x.
Imagem do MENU:
https://drive.google.com/open?id=0BzpPodhyQaNXRGstQkxUelpFTHM
Código MENU:
#!/bin/bash
# **********************************
# MENU BáSICO
# Marcelo Oliver - Fevereiro 2016
# **********************************
ICOR="\e[0;38;5;226m"
FCOR="e[m"
CE="\e[0;31m"
CF="\e[m"
MENU() {
CLEAR
printf "${ICOR}\e[2;${POS3}f %*s\n" "45" '' | sed "s/ /•/g"
printf "\e[3;${POS2}f••••••••••••••••••••• MENU •••••••••••••••••••••"
printf "\e[4;${POS1}f %*s\n" "49" '' | sed "s/ /•/g"
printf "\e[5;${POS}f•••\e[5;${POS4}f•••"
printf "\e[6;${POS}f•••\e[m [1] Opção_01 ${ICOR}•••"
printf "\e[7;${POS}f•••\e[7;${POS4}f•••"
printf "\e[8;${POS}f•••\e[m [2] Opção_02 ${ICOR}•••"
printf "\e[9;${POS}f•••\e[9;${POS4}f•••"
printf "\e[10;${POS}f•••\e[m [3] Opção_03 ${ICOR}•••"
printf "\e[11;${POS}f•••\e[11;${POS4}f•••"
printf "\e[12;${POS}f•••\e[m [4] Opção_04 ${ICOR}•••"
printf "\e[13;${POS}f•••\e[13;${POS4}f•••"
printf "\e[14;${POS1}f %*s" "49" '' | sed "s/ /•/g"
printf "\e[15;${POS2}f %*s" "47" '' | sed "s/ /•/g"
printf "\e[16;${POS3}f %*s\n\n" "45" '' | sed "s/ /•/g"
printf "\e[m"
read -p " OPÇÃO: " -n1 OPC
echo -e "\n"
case "$OPC" in
1) Opção_01 ;;
2) Opção_02 ;;
3) Opção_03 ;;
X|x|4) exit;;
*) MENSA01 ; PCM ;;
esac
}
ROWSCOLS() {
COLS=$(tput cols)
ROWS=$(tput lines)
POS=$(((COLS-50)/2))
POS1=$((POS+1))
POS2=$((POS+2))
POS3=$((POS+3))
POS4=$((POS2+47))
CHECACOLS
}
CHECACOLS() {
(($COLS < 60 || $ROWS < 30)) && printf "\n DIMENSãO:\n $ROWS:LINHAS X $COLS:COLUNAS\n MINIMO:\n 30 LINHAS X 60 COLUNAS\n" || MENU
}
#A PARTIR DESTE PONTO, CRIE AS FUNÇÕES PARA AS OPÇÕES...
#EXEMPLO
Opção_01() {
echo -e "$(date)\n $USER\n $PWD"
MENU
}
CLEAR() { printf '\033\143' ; }
MENSA00() { echo -e " "$CE"\nPREENCHIMENTO OBRIGATÓRIO!"$CF"" ; sleep 1 ; ReadUser ; }
PCM() { PROMPT ; CLEAR ; MENU ; }
PROMPT() { printf "\e[1;33m\n << PRESS ANY KEY TO CONTINUE >> \e[m" ; read -s -n1 PRMPT ; local PRMPT ; }
ROWSCOLS
PS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)
Att.:
Marcelo Oliver