您的位置:首页 > 运维架构 > Shell

Bash Shell 之stdin,stdout, stderr以及管道

2014-07-15 15:39 525 查看
名词:过滤器filter
Shell的一大特点是:一个命令的输出可以作为另一个命令的输入,而这个命令的输出又会传递至另一个命令
$ cmd1 | cmd2 | cmd3
这些命令就称作“filter”, 使用的是“|”来连接filter,(标准输入和标准输出在什么时候起的作用呢?)

如:$ls -l | cat -n > out.txt
过程:ls -l的输出通过“|”传给cat -n, cat -n 是怎么接受这些数据的呢?
cat -n通过标准输入(stdin)接收到输入的内容!加上行号后将输出重定向到文件out.txt
注:stdout中的内容,不做处理的话,直接打印到屏幕中
cmd从stdin中接受数据,cmd的输出(即命令结果)在stdout中
还有两种取命令输出的方法:
1, 命令结果存放到某个变量中
cmd_output=$(ls | cat -n)
echo $cmd_output
2, 用“反引号”把命令输出存到变量中
cmd_output=`ls | cat -n`
echo $cmd_output
注:以上两种方式(使用子shell,反引用)将命令的输入读入一个变量中,可以将它放入双引号中,以保留空格和换行符(\n)
cmd_output="$(ls | cat -n)"

echo $cmd_output
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息