Como passar nomes de arquivos como variáveis para um programa executável?

0

Esta deve ser uma questão relativamente simples. Eu estou tentando passar vários arquivos através de um programa executável em um loop. Eu tentei várias estratégias (armazenar em uma matriz, etc.), mas o nome do arquivo não parece ser reconhecido como uma variável. O erro que estou recebendo é: Nenhum arquivo ou diretório.

O esboço da minha última tentativa:

FILES=path/*/*

for f in $FILES
do
./function -input $f 
done

Estou trabalhando em um shell bash.

    
por sjr617 30.11.2017 / 18:16

1 resposta

3

Em vez de usar uma variável simples para armazenar uma sequência de expansão glob, recomendamos usar uma matriz adequada e ativar a opção de globalização do shell globstar para preencher arquivos em todos os subdiretórios

shopt -s globstar nullglob
file_list=(path/**/*)

e use um loop sobre a matriz para processar em cada arquivo

for file in "${file_list[@]}"; do
    printf '%s\n' "$file"
    # Your other actions on file goes here
done
    
por 30.11.2017 / 18:37

Tags