zoukankan      html  css  js  c++  java
  • shell中命令之间数据的传递

    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设置成" "换行符就可以了,只是在外边加上引号的这种做法是不对的

      

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

      

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

      out.txt=·ls | cat -n·

      其它操作与子shell相同

  • 相关阅读:
    页面置换算法
    常见内存分配算法
    进程枚举
    NET程序之小试牛刀
    周易起名大师 v18.0算法分析
    VMP分析笔记(cmp命令在VM中的表达)
    一个重启验证软件的算法分析
    一次艰辛的算法分析---------飘零4.0封包分析
    某音频格式转换器算法分析
    一次苦中作乐的追码过程(下)
  • 原文地址:https://www.cnblogs.com/linux-wangkun/p/5424099.html
Copyright © 2011-2022 走看看