首页 > 系统服务 > 详细

shell中命令之间数据的传递

时间:2016-04-23 11:45:01      阅读:315      评论:0      收藏:0      [点我收藏+]

1.管道 "|"

   ls | cat -n > out.txt

2. 子shell

  2.1 子shell 说明

    在shell脚本中可以用()操作符可以定义一个子shell   

#/bin/bash
pwd
(cd / ; ls)
pwd

  执行结果

  技术分享

  说明: 当命令在子shell中执行的时候不会对当前shell有任何影响

  2.2 获取子shell 中的数据

    cmd_output=$(COMMANDS)

    out=$(ls -l | cat -n)

#!/bin/bash
out=$(ls -l | cat -n)
echo $out

  输出结果:

  技术分享

  问题所在: 行和行之间的回车键没了。这显然是我们不想要的结果

  解决办法:将子shell的结果放入双引号中,保留换行符

  

#!/bin/bash
out=$(ls -l | cat -n)
echo $out
out="$(ls -l | cat -n)"
echo $out

  执行结果:

  技术分享

  什么鬼!!!居然没有变化。 难道书上写错啦!!

  最后在网上找到了问题的答案: IFS(内部域分隔符)

  IFS详情: http://www.2cto.com/os/201504/394478.html

  将IFS设置成"\n"换行符就可以了

  

#!/bin/bash
out=$(ls -l | cat -n)
echo $out
IFS="\n"
out="$(ls -l | cat -n)"
echo $out

技术分享

  

3. 反引用(与单引号可不是一回事)

  out.txt=·ls | cat -n·

  其它操作与子shell相同

shell中命令之间数据的传递

原文:http://www.cnblogs.com/linux-wangkun/p/5424099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!