美文网首页
1.13 将命令序列的输出读入变量

1.13 将命令序列的输出读入变量

作者: 拙言_Coder | 来源:发表于2019-03-05 13:56 被阅读0次

    《Linux Shell 脚本攻略(第 2 版)》读书笔记

    1. 用管道组合两个命令

      ls | cat -n > out.txt
      

      ls 的输出(stdout)被传递给 cat -n,后者将通过 stdin 所接收到的输入内容加上行号,然后输出重定向到文件 out.txt。

    2. 读取由管道相连的命令序列输出

      • 子shell方式

        out=$(ls | cat -n)
        
      • 反引用方式

        out=`ls | cat -n`
        
    3. 利用子 shell 生成一个独立进程

      子shell本身就是一个独立的进程。可以利用 () 操作符来定义一个子shell:

      pwd
      (cd /bin; ls)
      pwd
      

      可以看到,前后两次打印的当前路工作目录是一致的,子shell中执行cd命令没有影响到当前shell进程。

    4. 通过引用子 shell 的方式保留空格和换行符

      可以将命令放入双引号中,以保留空格和换行符(\n)。

      out="$(cat text.txt)"

      以上书中所说的方式没有起作用!

      为什么呢?让我们先来看一看1.16 字段分隔符和迭代器
      中关于 IFS 的介绍。

      分析out="$(cat text.txt)"

      我们单独执行 cat text.txt 命令输出正常,但赋值给 out 之后值就变成一行了。我猜测应该是在赋值的时候bash对文本进行了处理——以 IFS 中的字符列表作为分隔符,将内容分割之后再用 IFS 中的第一个分隔符进行拼接,然后赋值给 out

    相关文章

      网友评论

          本文标题:1.13 将命令序列的输出读入变量

          本文链接:https://www.haomeiwen.com/subject/wawnuqtx.html