Ignora partes do script sob algumas circunstâncias?

0

Meu script se parece com isso

strenggen ( ) { something; }

strengen 1 
strengen 2
strengen 3
strengen 4
strengen 5
etc..

Que adiciona alguns arquivos ao diretório chamado strengen?string=1 , strengen?string=2 etc. O que eu estou tentando fazer é se eu sair do script e executá-lo novamente, quero que ele encontre o último número que estava executar, se era 13, 14, 60000 ou 140000. Desde que os nomes dos arquivos contêm o último número, eu pensei que eu possa procurar o último arquivo modificado e copiar esse número (por exemplo, find . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" " ou algo semelhante. Eu posso pegar o número para começar, mas não tenho certeza de como ignorar as outras linhas?

    
por DisplayName 11.10.2015 / 00:15

1 resposta

1

O comando a seguir colocará o número do arquivo 'strengen' mais recente na variável $LATEST :

LATEST=$(/bin/ls -1t | grep '^strengen' | head -1 | sed -e 's/strengen.*=//')

Eu usei /bin/ls aqui, em vez de apenas ls , para eliminar qualquer alias que possa afetar a saída de ls -1 - ls é muito comumente com alias.

Observe também que a opção ls que estou usando é -1 (número um) e não -l (letra l ). Isso diz ls para listar um arquivo por linha. A opção -t informa ls para classificar por hora, mais recente primeiro.

Outra alternativa seria colocar algo como o seguinte na parte superior da sua função strenggen() :

[ -e "strengen?string=$1" ] && return

Isso fará com que a função retorne imediatamente sem fazer nada se o arquivo já existir.

    
por 11.10.2015 / 00:29