Por que este comando pipe não funciona neste script especial?

0

Esse script test.sh não funciona depois do comando used pipe. O resultado não mostra nada. Por quê?

#!/bin/bash

fun=$( echo $1 )
echo "$fun"

os comandos são os seguintes,

$ echo 1 | ./test.sh
    
por Yunong 28.11.2014 / 01:02

2 respostas

1

aço está correta . O que você deve fazer é:

  1. Use um comando que leia a entrada padrão:

    #!/bin/bash
    
    fun=$(cat)
    echo "$fun"  
    

    Ou simplesmente:

    #!/bin/bash
    
    cat
    
  2. Ou, para converter entradas padrão em parâmetros posicionais, use xargs :

    $ echo 1 | xargs ./test.sh
    
  3. Ou use o script da maneira como ele deve ser usado (conforme codificado):

    ./test.sh 1
    
por 28.11.2014 / 01:47
0

Faça isso

#!/bin/bash
echo "$@"

Em seguida, execute-o assim

./test.sh 1

Ele irá ecoar 1 , não torne isso muito complicado. E além disso, por que não usar apenas echo ? Não há motivos para usar este script.

    
por 28.11.2014 / 01:31