verificar existe script [não funciona] [fechado]

0

Eu quero verificar a existência de um diretório de caminho e incluí um diretório de amostra no qual tenho permissões para visualizar arquivos e esta mensagem é exibida:

No such file or directory /long_path/path1/abc.txt
No such file or directory /long_path/path2/xyz.txt

Aqui está um código:

#!/bin/sh
set -x
while read line; do
(ls -l $line)
done </something/pathlist.txt

Por dentro do pathlist.txt:

/long_path/path1/abc.txt
/long_path/path2/xyz.txt

Eu tentei várias iterações ... código example2.sh:

#!/bin/ksh
echo "Start!"
#entry="/something/pathlist.txt"
while read entry; do
    if [ -s $entry ];
    then
        echo "$entry exists"
    else
        echo "$entry does not exist..."
fi
done </something/pathlist.txt

código example3.sh:

#!/bin/csh
while read entry; do
    if [ -e $entry ];
    then
        echo "$entry does not exist"
    else
        echo "$entry exists "
 fi
 done </something/pathlist.txt

Por favor, ajude-me!

    
por MaestroCookies 23.10.2015 / 19:00

2 respostas

1

Há duas coisas acontecendo. A instrução if list; then list; [elif list; then list;] ... [else list;] fi opera nos status de saída. Se o status de saída da lista # 1 for 0, a lista 2 será executada; senão vai para a lista 3.

O comando de teste (que é colocado em alias com colchetes) retorna 0 se o código for bem-sucedido. [ -e /etc/passwd ] .

Então, no sentido, é o mesmo que em C e Java, mas invertido.

Script corrigido

#!/bin/mksh
#set -x
echo "Start!"

while IFS=  read entry; do

  if [ -e "$entry" ] ; then

  echo "$entry exist"

   else

   echo "$entry doesnt exist"

   fi

done < $HOME/pathlist.txt

Além disso, não codifique antes de tomar café

    
por Sergiy Kolodyazhnyy 23.10.2015 / 19:38
0
  1. Você precisa aprender como o redirecionamento no Unix funciona. Porque você precisa usar o redirecionamento quando invoca o script, mas não no código.
  2. Não tenho certeza, mas acho que você precisa substituir #!/bin/ksh por #!/bin/sh .
  3. LUCRO!
#!/bin/sh
while read entry; do
    if [ -s $entry ];
    then
        echo "$entry exists"
    else
        echo "$entry does not exist..."
fi
done

Salve e depois.

chmod +x example2.sh
example2.sh < something/pathlist.txt
    
por Yurii Kolesnykov 23.10.2015 / 19:39