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相同

  • 相关阅读:
    python selenium 弹框元素获取
    python小知识点
    ubuntu下配置java环境变量
    用Filezilla往ubuntu虚拟机上传文件
    jmeter,监控插件
    fiddler接口测试
    ZeroClipboard 复制到剪贴板 中文文档
    常用正则表达式
    中英文字体对照 ueditor添加字体
    字符串操作
  • 原文地址:https://www.cnblogs.com/linux-wangkun/p/5424099.html
Copyright © 2011-2022 走看看