Como posso passar um arquivo de valores delimitados por espaço em branco como uma série de argumentos?

0

Digamos que eu tenha um arquivo com uma lista de pacotes que desejo instalar, separados por espaços ou novas linhas. Como posso passar esse arquivo para o meu gerenciador de pacotes?

    
por jcora 23.07.2013 / 08:18

3 respostas

3

Tente o comando xargs , por exemplo:

cat file | xargs ls

Ou

 cat file | xargs gzip -c
    
por 23.07.2013 / 08:53
1

Leia o arquivo em uma matriz:

token=($(<list.txt))
yourCommand ${token[@]}

Se os tokens forem nomes de arquivos, contendo espaços e separados por novas linhas, isso não funcionará, pois os tokens geralmente são separados por espaços em branco no shell.

    
por 23.07.2013 / 17:17
1

Supondo que os nomes dos pacotes não contenham nenhum caractere curinga (ou seja, nenhum de \[?* ), você pode usar uma substituição de comando :

install-packages $(cat list-of-packages.txt)

Supondo que os nomes dos pacotes não contenham nenhum dos caracteres \"' , você pode usar xargs . Observe que isso redireciona a entrada do comando install-packages da lista de pacotes, portanto, pode não funcionar se o instalado exigir alguma entrada interativa.

xargs install-packages <list-of-packages.txt
    
por 30.07.2013 / 03:43