Eu quero verificar a saída de vários arquivos, digitando um único comando [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    
(directory=$(python -c 'import read_params; print(read_params.get_directory())')
nsrc=$(cat $directory/master.pixels|wc -l)
tail $directory/forward_src0{1..$nsrc}_ls00/out_data_forward)

O que isso faz é que uma simulação está em execução (o que é isso não é importante) e o comando acima rastreia, imprimindo os arquivos no diretório:

  • .... / forward_src01_ls01 / out_data_forward
  • .... / forward_src01_ls02 / out_data_forward
  • .... / forward_src01_ls03 / out_data_forward
  • .... / forward_src01_ls04 / out_data_forward

e assim por diante até src_08.

Ele é executado em alguns sistemas Linux sem erro. Mas no meu sistema, isso gera o erro abaixo:

[prasad@daahpc1 sparc_flows]$ (directory=$(python -c 'import read_params; print(read_params.get_directory())')
> nsrc=$(cat $directory/master.pixels|wc -l)
> tail $directory/forward_src0{1..$nsrc}_ls00/out_data_forward)
tail: cannot open /scratch/prasad/sparc_test/forward_src0{1..8}_ls00/out_data_forward' for reading: No such file or directory

Para ficar claro, esses arquivos existem ... eu posso abri-los individualmente, mas não em um lote.

    
por Prasad Mani 03.11.2018 / 15:34

1 resposta

0

O shell em seus sistemas parece ser diferente dos que você usou nos outros sistemas ( echo $SHELL )

Seu shell local não está entendendo / substituindo o {1..8} na sua chamada tail .

Tente usar o mesmo shell em seu sistema, mas você também pode usar o curinga universal * em seu script no caso de {1..8} poder ser substituído com segurança por *

    
por 03.11.2018 / 15:40