Korn Shell Dúvida [RESOLVIDO]

1. Korn Shell Dúvida [RESOLVIDO]

Floriano Silva
_FpS_

(usa Ubuntu)

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


  


2. Re: Korn Shell Dúvida

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

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]

Floriano Silva
_FpS_

(usa Ubuntu)

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]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

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]

Perfil removido
removido

(usa Nenhuma)

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]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

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

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

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]

Floriano Silva
_FpS_

(usa Ubuntu)

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]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

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]

Perfil removido
removido

(usa Nenhuma)

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

Floriano Silva
_FpS_

(usa Ubuntu)

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/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts