Shell Expression

1. Shell Expression

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/10/2013 - 10:07h

Olá Pessoal,

Eu possuo um script que verifica a existência de alguns arquivos em um diretório.

Os arquivos possuem a seguinte nomenclatura.. (0000.txt até o 9999.txt)

Como eu verifico a existência no momento em que estou trabalhando com o arquivo corrente, eu executo a seguinte verificação:


VAR=`expr ${CORRENTE} - 1`


Com isso, terei o resultado do arquivo anterior e farei um simples find por este para garantir que ele existe.

O problema nesta lógica se dá, quando tenho arquivos como 0000.txt, onde o resultado não será o 9999, por exemplo, e sim "-1"

Vocês poderiam me ajudar em como eu poderia fazer para que eu consiga resolver este problema destes casos iniciando com 0?


Desde já obrigado


  


2. Re: Shell Expression

Fernando
phoemur

(usa Debian)

Enviado em 09/10/2013 - 16:47h

Posta seu script pra analisarmos...

No shell, uma variável com valor 0001 ficaria apenas como 1, ou seja, sem os zeros na frente...
Pra colocar os zeros eu costumo usar o printf, mas dá pra fazer de outras formas...


por exemplo, imprimir apenas os arquivos existentes no diretorio atual de 0000 a 9999


#!/bin/bash

exec 3< <(seq 0 9999 | xargs printf "%04d.txt\n")
while read FILE <&3; do
if [ -f "$FILE" ]; then
echo "$FILE"
fi
done
exec 3<&-


No seu exemplo, e se vc colocasse que se VAR for negativo ele fica igual a 9999 ?

VAR=$((CORRENTE-1))
if [ "$VAR" -lt 0 ]; then
VAR=9999
fi


3. Re: Shell Expression

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/10/2013 - 17:42h

Os parâmetros "-w" e "-f" do seq permitem-lhe prescindir daquele printf.

seq -w 0 9999 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts