Obrigado Lucien Raven funcionou. O intuito disso é porque estou aprendendo shell script
At, Jamilson Silva User Arch Linux http://www.archlinux-br.org --- Em [email protected], Lucien Raven <lucienra...@...> escreveu > > > 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, jsca...@... <jsca...@...> escreveu: > > > De: jsca...@... <jsca...@...> > > 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 <lucienraven@> 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, jscarmo@ <jscarmo@> > > escreveu: > > > > > > > De: jscarmo@ <jscarmo@> > > > > 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 >
