Olá! Eu apenas reproduzi o trecho onde fiz a alteração. Sim, é importante checar a passagem de parâmetro.
Mas o ponto onde estava o problema era o comando: if [ -d "$i" ]; then Se você passa como parâmetro, por exemplo, "/etc". Então a variável $arquivo ficará com "/etc" mas ao executar o comando "ls /etc", a variável $i irá conter apenas, por exemplo, "passwd" (um arquivo do diretório /etc). Logo o "if [ -d "passwd" ]; then" não irá encontrar o arquivo no diretório onde foi executado! Então uma saída é incluir o diretório no if: if [ -d "$arquivo/$i" ]; then Assim o if fica: "if [ -d "/etc/passwd" ]; then" Expliquei ou compliquei? []´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, 18:16 > Lucien Raven ele necessita a passagem > de parâmetro por causa desse if, verificando se foi passado > um parâmetro. > > if [ $# -ne 1 ]; the > > At, > Jamilson Silva > > --- Em [email protected], > Lucien Raven <lucienra...@...> escreveu > > > > > > 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, jsca...@... <jsca...@...> > escreveu: > > > > > De: jsca...@... <jsca...@...> > > > 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.jabber@> escreveu > > > > > > > > Se a passoa passar como parametro o caminho > completo > > > do diretorio > > > > /usr/loca/diretorio por exemplo. Nao > funciona? > > > > > > > > jscarmo@ 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 > > > > > > > ------------------------------------ > > --------------------------------------------------------------------- > 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
