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 <[email protected]> > 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 : [email protected] <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]
