小编Tom*_*Lau的帖子

为什么管道输出到bash函数中不起作用

关于此有许多讨论:将输出输出到bash函数

我只想知道为什么:

  #bin/sh
  function myfunc () {
      echo $1
  }

  ls -la | myfunc
Run Code Online (Sandbox Code Playgroud)

将给空行。请问为什么我们的输出ls不被视为$1函数?其背后的机制是什么?

如果我们尝试:

  #bin/sh
  function myfunc () {
      i=${*:-$(</dev/stdin)}
      echo $i
  }

  ls -la | myfunc
Run Code Online (Sandbox Code Playgroud)

然后我们有:

total 32 drwxr-xr-x 6 phil staff 204 Sep 11 21:18 . drwx------+ 17 phil staff 578 Sep 10 21:34 .. lrwxr-xr-x 1 phil staff 2 Sep 10 21:35 s1 -> t1 lrwxr-xr-x 1 phil staff 2 Sep 10 21:35 s2 -> t2 lrwxr-xr-x 1 phil …

unix linux bash shell pipe

1
推荐指数
1
解决办法
456
查看次数

标签 统计

bash ×1

linux ×1

pipe ×1

shell ×1

unix ×1