Posso usar saída de pipe como um argumento de script de shell?

18

Suponha que eu tenha um script de shell bash chamado Myscript.sh que precisa de um argumento como entrada.

Mas quero que o conteúdo do arquivo de texto chamado text.txt seja esse argumento.

Eu tentei isso, mas não funciona:

cat text.txt | ./Myscript.sh

Existe uma maneira de fazer isso?

    
por Narin 15.08.2012 / 15:11

5 respostas

22

Substituição de comandos .

./Myscript.sh "$(cat text.txt)"
    
por 15.08.2012 / 15:13
13

Você pode usar saída de pipe como um argumento de script de shell.

Experimente este método:

cat text.txt | xargs -I {} ./Myscript.sh {}
    
por 09.07.2015 / 16:32
1

Se você tiver mais de um comando no arquivo, considere usar xargs ou paralelo , por exemplo

xargs -d '\n' Myscript.sh < text.txt
parallel -j4 Myscript.sh < text.txt
    
por 09.12.2013 / 13:39
0

Tente,

 $ cat comli.txt
 date
 who
 screen
 wget

 $ cat comli.sh
 #!/bin/bash
 which $1

 $ for i in 'cat comli.txt' ; do ./comli.sh $i ; done

para que você possa inserir os valores um por um para comli.sh de comli.txt .

    
por 10.12.2013 / 05:19
0

Substituição de processos

./Myscript.sh <(cat text.txt)

Ver, por exemplo, link

    
por 11.06.2018 / 08:33