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

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

ls|myscript

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

阅读 31.2k
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 {} \;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进