Fórum Ubuntu Linux - PT
23 de Maio de 2013, 20:31 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Informações da última versão: Ubuntu Linux 13.04 -Raring Ringtail
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: preciso saber se é arquivo ou diretorio  (Lida 1549 vezes)
motoqueiro10
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 2


Ver Perfil
« em: 23 de Setembro de 2009, 09:31 »

estou aprendendo VI e fiz esse script mas não tah certo o que tem de errado?
Alguém pode corrigir para mim, estou aprendendo linux por apostilas sozinho.
esse é um exercicio que não consigo fazer porque não tenho explicações.

#!/bin/bash
     
       arquivo='find * -type f'
     
       while read -p "Digite o nome do arquivo ou diretório: " digite; do
             if [ $digite == arquivo ]; then
                  echo "Esse é um arquivo: $digite"
                  BREAK
             else
                 echo "Esse é um Diretório"
            fi
      done
Registrado
musinet
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 280



Ver Perfil
« Responder #1 em: 23 de Setembro de 2009, 09:46 »

Pelo que eu pude entender desse scroipt, ele começa dando um find em sua pasta e armazenando todos os arquivos na variável $arquivo. Como o parâmetro é type -f, ele não armazenará nomes de pastas.

Em seguida ele começa um laço onde solicita o nome de um arquivo ou diretório, armazenando o resultado na variável $digite. Em seguida verifica se o conteúdo de $digite coincide com algum dos nomes gravados em $arquivo. Se coincidir, ele avisa que é um arquivo e interrompe o processamento. Se não, avisa que é um diretório e retorna o laço.

Abs.
Cassiano
Registrado
motoqueiro10
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 2


Ver Perfil
« Responder #2 em: 24 de Setembro de 2009, 07:37 »

o problema agora é que ele diz que tudo é diretório, mesmo eu digitando um arquivo ele diz que é um diretório o que deve ser mudado?
Registrado
clcampos
Administrador
Usuário Ubuntu
*****
Deslogado Deslogado

Mensagens: 10.782


.:: User Linux #439596 ::.


Ver Perfil
« Responder #3 em: 24 de Setembro de 2009, 08:39 »

É evidente que ele vai dizer que tudo é um diretório!

Você não esta usando o conteúdo da variável arquivo pois você não a usa com o $. A princípio seu if deveria ficar assim para referenciar o conteúdo da variável arquivo:

Citar
if [$digite == $arquivo ];then

Porém não se esqueça que dentro de $arquivo provavelmente não existe um termo e sim uma lista de termos, assim para que sua rotina funcione como você quer deveria mudá-la, talvez assim (não testei nada, digitei direto da sua rotina aqui no fórum):

#!/bin/bash
      
       arquivo='find * -type f'

       read -p "Digite o nome do arquivo ou diretório: " digite
      
       for item in $arquivo; do
             if [ "$digite" = "$item" ]; then
                  echo "Esse é um arquivo: $digite"
                  BREAK
             else
                 echo "Esse é um Diretório"
            fi
      done

Porém para que tanto trabalho? Por não testa direto se o nome digitado é um diretório, ou não?

Citar
#!/bin/bash

read -p "Digite o nome do arquivo ou diretório: " digite

test -d "$digite"  && echo "Esse é um Diretório" || echo "Esse é um arquivo: $digite"

Claro que a rotina esta rudimentar e sem consistências, mas acho que dá para dar uma ideia.
« Última modificação: 24 de Setembro de 2009, 08:42 por clcampos » Registrado

Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines
© 2013 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!