shell脚本如何从管道里读取数据

Schrodinger
  • 68

Shell通过$*来获取参数,但是我如果通过管道传内容进来,$*什么都拿不到。
举例

ls|myscript

我要通过myscript处理当前文件列表,改怎么获取

回复
阅读 25.7k
6 个回答

可以通过read来读取

read LINE
while [[ ! -z $LINE ]]
do
    read LINE
done
myscript `ls` 

或者

 ls | xargs myscript

用 cat 就可以了

#!/bin/bash
cat

或者放入 subshell,就可以随便在需要的地方使用了

#!/bin/bash
echo $(cat)

搞清楚数据的来源,管道数据来自stdin,而$*等读取的是args。

推荐使用find命令:find . -d 1 -exec myscript {} \;

宣传栏