Pular para o conteúdo

Korn Shell Dúvida [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:07h

Boa noite pessoal, eu estou aprendendo a mexer com ksh e to com a seguinte dúvida, quando eu executo esse shell:

for x in $(ls $1);do
if [ -d x ];then
echo "O arquivo '$x' é um diretório!!!"
else
echo "O arquivo '$x' não é um diretório!"
fi
done

A saída não me devolve uma variável, mas sim uma palavra qualquer, segue o exemplo:

./tarefa4.ksh /home/
O arquivo 'paulo' não é um diretório!

Alguém poderia me mostrar o porquê da saída x não estar sendo interpretada como um arquivo?

Desde já, obrigado

Responder tópico

2. Re: Korn Shell Dúvida

Enviado em 28/09/2015 - 21:14h

Olá,


O erro esta dentro do if :

if [ -d x ];then (faltou o caractere $ para indicar que se trata de uma variável). Assim:

if [ -d $x ];then

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:17h

tonyhts escreveu:

Olá,


O erro esta dentro do if :

if [ -d x ];then (faltou o caractere $ para indicar que se trata de uma variável). Assim:

if [ -d $x ];then

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---
Continua reconhecendo o arquivo como não-diretório :/


4. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:21h

Pode ser permissão...

Tente rodar como root:

sudo su -
./tarefa4.ksh /home/
abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

5. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:24h

Se eu não me engano, você não precisa usar ls caso esteja no mesmo diretório.
Um for i in * resolve. Teste no ksh.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

6. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:30h

listeiro_037 escreveu:

Se eu não me engano, você não precisa usar ls caso esteja no mesmo diretório.
Um for i in * resolve. Teste no ksh.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden
Vdd.

O Problema é que le passa o caminho como parametro em $1...

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

7. Re: Korn Shell Dúvida

Enviado em 28/09/2015 - 21:31h

Acabei de testar aqui e rolou , tive que abrir e fechar o if com 2 colchewtes. Assim:

for x in $(ls $1);do
if [[ -d $x ]];then
echo "O arquivo '$x' é um diretório!!!"
else
echo "O arquivo '$x' não é um diretório!"
fi
done
abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

8. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 21:36h

tonyhts escreveu:

Acabei de testar aqui e rolou , tive que abrir e fechar o if com 2 colchewtes. Assim:

for x in $(ls $1);do
if [[ -d $x ]];then
echo "O arquivo '$x' é um diretório!!!"
else
echo "O arquivo '$x' não é um diretório!"
fi
done


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---
Ai respondeu que é um diretório? Se sim então o problema deve estar aqui em alguma configuração da máquina! Se for isso mesmo eu vou ver o que eu posso fazer e retorno a resposta para vocês!


9. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 22:53h

Sim, aqui listou os diretorios que estavaam em /home e informou ser diretorio...


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

10. Re: Korn Shell Dúvida [RESOLVIDO]

Enviado em 28/09/2015 - 22:55h

No lugar de if [[ -d ... ]] dá prá usar if test -d ....

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

11. Resolução

Enviado em 29/09/2015 - 15:22h

Pessoal descobri o que estava de errado, acontece algum erro que eu não sei explicar onde dependendo do diretório que o script está (e olha que estava num diretório reconhecido da variável $PATH) ele não funciona, então o que eu fiz foi adicionar "$1/" no if do teste do diretório, então o script funcional ficou assim:


for x in $(ls $1);do
if [[ -d $1/$x ]];then
echo "O arquivo $x é um diretório!"
else
echo "O arquivo $x não é um diretório!"
fi
done
Obrigado a todos que tentaram me ajudar o/

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder