shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] resolvido o problema do case e shift


From: Elder Marco
Subject: Re: [shell-script] resolvido o problema do case e shift
Date: Sat, 3 Jan 2009 16:34:52 -0200

hehe... É verdade Edmar. Fiz uns testes aqui e funcionou direitinho mesmo
usando aspas. É que no manpage do do comando test, ele diz que a opção -eq
serve para comparar dois inteiros diferentes e nesse caso você não precisa
das aspas. Mas mesmo assim, funciona caso você as utilize. Se vc fosse
comparar strings que contenham numeros e letras, você usaria o = .

De qualquer maneira, você precisa ter somente números para poder fazer essa
comparação. Pois se contiver letras, a opção -eq não vai funcionar e comando
test vai exbir a mensagem "integer expression expected" (expressão inteira
esperada).

Interessante seu script. Gostei.

[]'s


2009/1/3 edmarssouza <address@hidden>

>   E ai galera, consigue resolver o problema do case e shift.
> Graças a ajuda do Elder Marco, ai cara muito obrigado.
> Como sempre fui de pedi ajuda aqui na lista, hoje vou contribui
> com o código que acabei de escrever com a ajuda do Elder Marco.
> Eu escrecri esse programa para um mini linux totalmente em modo texto,
> voltado tanto a mini servidor como para usuario avançado, visto
> que o sistema todo é em modo texto. Com 34MB, lançarei na net em
> breve,
> não era esse meu objetivo, mais fazer o que. É o seguinte o script é
> para usar a lixeira em modo texto, com o script pode-se: apagar um
> arquivo
> (enviando para lixeira), lista os arquivos da lixeira, recupera e
> esvazia:
>
> #!/bin/sh
> # Envia, lista, recupera e esvazia arquivo(s)/diretorio(s) da lixeira
> #
> # Autor : Edmar de Souza
> # E-mail : address@hidden <edmarssouza%40yahoo.com.br>
> # Licensa : GNU General Public License v2
> # Versao : 1.0
> # Data : 02/01/2009
>
> # Define path de alguns comandos
> mkdir=$(which mkdir); echo=$(which echo); ls=$(which ls); mv=$(which
> mv)
> rm=$(which rm); wc=$(which wc); sed=$(which sed)
>
> # Cria o diretorio que sera utilizado como lixeira
> $mkdir -p "$HOME/.lixeira"
>
> status() {
> local variavel=$?
> if [ "$variavel" = "0" ]; then
> $echo -ne "\033[80G[ \033[32;1mOK\033[m ]"; $echo
> else
> $echo -ne "\\033[80G[ \033[31;1mFalha\033[m ]"; $echo
> fi
> }
>
> # Ajuda do programa
> help() {
> $echo -e " Envia arquivo(s)/diretorio(s) deletados para lixeira
>
> \033[37;1m Usage:\033[0m ${0##*/} opcao arquivo/diretorio
>
> Opcao:
> -l, --lista Lista os arquivo(s)/diretorio(s), tamanho(s),
> tipo(s) na lixeira
> -d, --deleta Envia um arquivo ou diretorio para lixeira
> -r, --recupera Recupera um ou mais arquivos da lixeira
> -e, --esvazia Esvazia a lixeira
> -h, --help Imprime mensagem de ajuda do programa
> -v, --versao Imprime a versao do programa
> "
> exit 0
> }
>
> # Lista os arquivos/diretorios da lixeira, por tamanho, por tipo e
> ordena do maior
> # para o menor
> lista() {
> $echo " Existe(m) $($ls "$HOME/.lixeira" | $wc -l) arquivo
> (s)/diretorio(s) na lixeira:"
> $ls -lsSF "$HOME/.lixeira" | $sed '/^total [[:digit:]]\{1,\}$/d'
> exit 0
> }
>
> # Pergunta ao usuario se o mesmo quer apagar os arquivos/diretorios
> da lixeira
> esvazia() {
> local simno
> read -p " Tem certeza que deseja esvazia a lixeira (s/n)? " simno
> case "$simno" in
> [Ss]) $echo -n " Esvaziando a lixeira ..."
> $rm -rf $HOME/.lixeira/* && status
> ;;
> [Nn]) $echo -e " Esvaziamento da lixeira cancelada ..."
> ;;
> esac
> exit 0
> }
>
> # Imprime a versao do programa
> versao() {
> $echo -e " del v1.0 - 02/01/2009"
> exit 0
> }
>
> # Se existir menos do que 1 parametro na linha de comando, executa a
> ajuda do programa
> [ "$#" -lt "1" ] && help
>
> if [ "$#" -gt "0" ]; then
> case "$1" in
> -[Hh]|--[Hh][Ee][Ll][Pp])
> help
> ;;
> -[Ll]|--[Ll][Ii][Ss][Tt][Aa])
> lista
> ;;
> -[Ee]|--[Ee][Ss][Vv][Aa][Zz][Ii][Aa])
> esvazia
> ;;
> -[Vv]|--[Vv][Ee][Rr][Ss][Aa][Oo])
> versao
> ;;
> -[Dd]|--[Dd][Ee][Ll][Ee][Tt][Aa])
> # Se o usuario escolher a opcao -d|--deleta e nao indicar um
> argumento, o programa envia
> # uma mensagem ao mesmo, pedindo o argumento
> if [ -z "$2" ]; then
> $echo "O argumento para a opcao $1 esta vazia"
> exit
> fi
> # Esse shift tira da linha de comando, por exemplo, o parametro -d|--
> deleta deixando apenas
> # os argumentos, que seram processados
> shift
> # Move cada argumento passado pelo usuario para a lixeira localizado
> no diretorio
> # pessoal do usuario
> $mv -f $* "$HOME/.lixeira"
> ;;
> -[Rr]|--[Rr][Ee][Cc][Uu][Pp][Ee][Rr][Aa])
> if [ -z "$2" ]; then
> $echo "O argumento para a opcao $1 esta vazia"
> exit
> fi
> shift
> # Cria o diretorio para onde os arquivos recuperados irao
> $mkdir -p "$HOME/.recuperado"
> cd "$HOME/.lixeira"
> $echo -n "Recuperando arquivo(s)/diretorio(s) para:
> $HOME/.recuperado"
> $mv -f $* "$HOME/.recuperado"
> status
> ;;
> # Se o usuario escolher alguma opcao que nao esteja no case, sera
> imprimido a ajuda do programa
> *) help
> ;;
> esac
> shift
> fi
>
> Qualquer dúvida posta ai que eu respondo, estou aceitando critica,
> sugestões, qualquer coisa. Eu falei Elder seu teimoso que não era as
> aspas. rsrs. brincadeira obrigadão cara. Valeu galera.
>
>  
>



-- 
Elder Marco

Linux User: #471180

"O conhecimento é tristeza: aqueles que mais sabem são os que mais
profundamente devem lamentar a mais fatal verdade, a árvore do conhecimento
não é a da vida." (Versos extraídos da tragédia Manfred, de Byron e citado
por Nietzsche em "Humano, demasiado humano")


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]