1.12-14 命令序列输出、read、IFS

简介:

1.12 读取命令序列输出

    所谓命令序列就是指 一个命令的输出作为 另一个命令的输入 这样的多个命令序列组合起来。最后可以把命令序列的输出重定向到文件中,或保存到一个变量中。

    将命令序列输出保存到变量中有两种方法:

        1、子shell

            var=$(COMMANDS)

        2、反引用

            var=`COMMANDS`   命令用反引号 引起来

    子shell是一个独立的进程,命令在子shell中执行时,对当前shell没有影响,所有的改变仅限于子shell中。如下面的例子中,进入到子shell中执行ls命令,可发现当前shell的目录路径没有变化。

1
2
3
4
5
     [root@localhost ~] # mkdir -p test1/test2    
     [root@localhost ~] # pwd;(cd test1;ls);pwd
     /root
     test2
     /root

书上说通过子shell或反引用输出到变量中内容会自动去掉空格和换行符,但是在centos6上试验了一下,并没有出现这种情况,如下:    

1
2
3
4
5
6
7
8
9
10
11
     [root@localhost ~] # cat a
     1
     2
     3
     
     [root@localhost ~] # var=$(cat a)
     [root@localhost ~] # echo $var
     1
     2
     3
按书上说打印var变量时显示格式应该为 1  2  3  这里并没有出现这种情况,如果出现这种情况,可在子shell命令两边加双引号,如下列命令 [root@localhost ~] # var="$(cat a)"

1.13 read命令

    read var   读取输入的字符存入var变量

    read -n num var  读取num个输入的字符存入var变量

    read -p "提示符"  var   显示提示信息,并将输入的字符存入var变量中。var和其前面的"一定要有空格

    read -t num var  在num秒内读取输入的字符存入var变量中。输入完字符一定要敲回车键,否则会认为没有输入

    read -d delim_char var 遇到定界符delim_char时结束输入并将定界符前的 输入存入变量var中。

    read var1 var2 var3    从输入到第一个空格间的字符存入var1中,第一个空格到第二个空格的存入var2中,剩下的所有存入var3中 



    以不回显的方式读取字符并存入变量:

        read -s var   下面是与-p结合使用可以打印提示

1
2
3
4
5
6
7
8
9
     [root@localhost ~] # read -p "Enter passwd:" -s var;echo;echo passwd is $var    
     Enter  passwd :
     passwd  is qa1
     其中中间有个单独的 echo 语句是为了换行使用。
     
     [root@localhost] # stty -echo;read -p "Enter:" var;stty echo;echo;echo passwd is $var
     Enter:
     passwd  is qa1
     这是第二种方法,stty - echo  禁止将输出发送到终端,stty  echo 则是允许发送

1.14 字段分隔符

    IFS  内部字段分隔符,默认以空白字符作为字段分隔符(空白字符包括:换行、制表、空格)


    格式 IFS "delim_char"      使用以delim_char作为字段分隔符

     使用方式如下,指定分隔符时加不加""都行

1
2
3
4
     [root@localhost ~] # IFS=:;var=hello:world;echo $var    
     hello world
     [root@localhost ~] # IFS=",";var=hello,world;echo $var
     hello world



本文转自 f_066 51CTO博客,原文链接:http://blog.51cto.com/ganmu/1846262,如需转载请自行联系原作者
相关文章
|
1月前
|
C++
C++学习系列---读取文件名存入txt和从txt读取每行信息
C++学习系列---读取文件名存入txt和从txt读取每行信息
|
9月前
从键盘上输入10个整数,写入到一个文件number.txt中,然后从此文件读出数据,显示在屏幕上。
从键盘上输入10个整数,写入到一个文件number.txt中,然后从此文件读出数据,显示在屏幕上。
166 0
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
编写一个程序,如果名为Exercise12_15.txt的文件不存在,则创建该文件。使用文本I/O将随机产生的100个整数写入文件,文件中的整数由空格分开。从文件中读回数据并以升序显示数据。
240 0
将文件a.txt的字符串前加上序号“1:”、“2:”、…。
将文件a.txt的字符串前加上序号“1:”、“2:”、…。
127 0
读取文件内容: 1.通过open函数获取文件对象 2.执行read函数 需要指定读取的字符
读取文件内容: 1.通过open函数获取文件对象 2.执行read函数 需要指定读取的字符
将cmd中命令输出保存为TXT文本文件
转自:https://www.cnblogs.com/hongten/archive/2013/03/27/hongten_windows_cms.html 例如:将Ping命令的加长包输出到D盘的ping.txt文本文件。
1544 0
[20171205]uniq命令的输入输出.txt
[20171205]uniq命令的输入输出.txt --//前几天遇到XXD与通配符问题,链接http://blog.itpub.net/267265/viewspace-2147702/ --//今天再次遇到uniq命令的输入输出问题.
922 0