为什么这个管道命令不能在这个特殊的 bash 脚本中工作?

为什么这个管道命令不能在这个特殊的 bash 脚本中工作?

使用管道命令后该脚本test.sh不起作用。结果什么也没显示。为什么?

#!/bin/bash

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

命令如下,

$ echo 1 | ./test.sh

答案1

钢驱动器是正确的。你应该做的是:

  1. 使用读取标准输入的命令:

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

    或者简单地:

    #!/bin/bash
    
    cat
    
  2. 或者,要将标准输入转换为位置参数,请使用xargs:

    $ echo 1 | xargs ./test.sh
    
  3. 或者,按照应该使用的方式使用脚本(如编码):

    ./test.sh 1
    

答案2

改为执行此操作

#!/bin/bash
echo "$@"

然后像这样运行

./test.sh 1

它会回显1,不要弄得太复杂。此外,为什么不直接使用呢echo?没有理由使用这个脚本。

相关内容