De maneira rápida... ls $arquivo | while read i do if [ -d "$arquivo/$i" ]; then echo -e "$i \033[01;32m(dir)\033[00m" elif [ -e "$arquivo/$i" ]; then echo -e "$i \033[01;33m(arquivo)\033[00m" fi done
Sem especificar o diretório no if, ele não encontra o arquivo/diretório. []´s LR :> --- Em qui, 23/7/09, [email protected] <[email protected]> escreveu: > De: [email protected] <[email protected]> > Assunto: [shell-script] Re: Resultado Errado > Para: [email protected] > Data: Quinta-feira, 23 de Julho de 2009, 17:39 > Marcus, > > Não querendo ser chato demais. Por favor teste esse script > na máquina > e verifique que quando executamos ele no diretorio > corrente. > Por exemplo: > > Se o script estive no /home/jamilson > ./verificar.sh . > ./verificar.sh ~ > ./verificar.sh /home/jamilson > > ele me retorna o resultado esperado como, > o que é diretório mostra ao lado a palavra (dir) de > verde > e já quando é arquivo me mostra o nome do arquivo com a > palavra (arquivo) de amarelo. > > Já quando passamos: > ./verificar.sh / > ./verificar.sh /etc > ./verificar.sh /tmp > > não trás o resultado esperado. > > > e muito obrigado por sua atenção. > > --- Em [email protected], > Marcus :D <marcus.jab...@...> escreveu > > > > Se a passoa passar como parametro o caminho completo > do diretorio > > /usr/loca/diretorio por exemplo. Nao funciona? > > > > jsca...@... escreveu: > > > > > > > > > Marcus, > > > > > > mesmo eu fazendo assim > > > > > > if [ -d "$i" ]; then > > > echo -e "$i \033[01;32m(dir)\033[00m" > > > else > > > echo -e "$i \033[01;33m(arquivo)\033[00m" > > > fi > > > > > > não funciona. > > > > > > como você pode vê estou querendo trazer os > diretórios. quando > > > encontrado um diretório me mostra o nome do > diretório (dir) e caso > > > encontre um arquivo me mostre nome do arquivo > (arquivo). > > > > > > senod que isso funciona somente com o diretório > onde o script esta > > > sendo executado. > > > > > > --- Em [email protected] > > > > <mailto:shell-script%40yahoogrupos.com.br>, > Marcus :D > > > <marcus.jabber@> escreveu > > > > > > > > A tua segunda estrutura de if está errado. > > > > Está assim if-elif, está faltando o else. > > > > > > > > Abs! > > > > > > > > > > > > > > > > jscarmo@ escreveu: > > > > > > > > > > > > > > > Caros colegas tem o seguinte script, > > > > > > > > > > #1/bin/bash > > > > > > > > > > arquivo="$1" > > > > > > > > > > if [ $# -ne 1 ]; then > > > > > echo "" > > > > > echo "Erro -> uso $0 [nome do > diretório]" > > > > > echo "" > > > > > else > > > > > ls $arquivo | while read i > > > > > do > > > > > if [ -d "$i" ]; then > > > > > echo -e "$i \033[01;32m(dir)\033[00m" > > > > > elif [ -e "$i" ]; then > > > > > echo -e "$i > \033[01;33m(arquivo)\033[00m" > > > > > fi > > > > > done > > > > > fi > > > > > > > > > > o problema é o seguinte: > > > > > > > > > > quando passa o nome do diretório > corrente (o diretório onde o script > > > > > esta) ele me retorna o resultado > certo. > > > > > Mas quando passo outro diretório o > resultado vem errado. > > > > > > > > > > Gostaria de uma ajuda > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de > programação, como perl, C etc. Quem insistir em não > seguir esta regra será moderado sem prévio aviso. > --------------------------------------------------------------------- > Sair da lista: [email protected] > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > > ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
