Pular para o conteúdo

Shell Expression

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Shell Expression

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

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Shell Expression

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

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

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

seq -w 0 9999 

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder