首页 理论教育 循环命令、I/O重定向与管道配合

循环命令、I/O重定向与管道配合

时间:2023-11-18 理论教育 版权反馈
【摘要】:while循环可以使用输入重定向,对输入文件的每一行进行处理。name_list.txt的内容由cat命令输出,通过管道传递给while循环。while循环接到name_list.txt第一行的内容后,读入到变量name中,echo命令显示Good morning,Tom。while循环结束后,所有的显示并未出现在屏幕,而是重定向到临时文件。

循环命令、I/O重定向与管道配合

while循环可以使用输入重定向,对输入文件的每一行进行处理。例如,下面的文件是一个名字列表:

978-7-111-48202-4-Chapter06-108.jpg

脚本while_input_redirection.sh的while循环的第一行为whilereadname,最后一行为done<name_list.txt,表示将文件name_list.txt的每一行读入到变量name中:

978-7-111-48202-4-Chapter06-109.jpg

运行脚本,while循环依次对文件中的每个人进行了早安问候:

978-7-111-48202-4-Chapter06-110.jpg

下面举一个for循环的输出通过管道线传给Linux命令的例子。下面的脚本中的for循环可以显示几个字母

978-7-111-48202-4-Chapter06-111.jpg

运行脚本for_sort_1.sh,显示了这几个字母。但是,字母没有按照字母表顺序排列:

978-7-111-48202-4-Chapter06-112.jpg

在脚本for_sort_1.sh的后面加管道线和排序命令sort,字母就按照字母表顺序排列了:

978-7-111-48202-4-Chapter06-113.jpg

978-7-111-48202-4-Chapter06-114.jpg

可以将管道线和排序命令sort直接放在脚本里面关键字done的后面,得到脚本for_sort_2.sh:

978-7-111-48202-4-Chapter06-115.jpg

运行脚本for_sort_2.sh,显示了按照字母表顺序排列好的字母:

978-7-111-48202-4-Chapter06-116.jpg(www.xing528.com)

下面的脚本while_cat_redirection.sh中的while循环处在一条cat命令及管道线的后面,cat输出的每一行被关键字while后面的read命令读取并存入变量name中。while循环的最后一行为done>tmp_name$$。$$是脚本运行时的进程ID(见表4-2),它的值是不固定的,假设$$=1234,while循环中的echo命令的显示就会重定向到临时文件tmp_name1234。

978-7-111-48202-4-Chapter06-117.jpg

运行脚本while_cat_redirection.sh,参数为前面刚刚提到过的文件name_list.txt:

978-7-111-48202-4-Chapter06-118.jpg

于是脚本的参数$1=name_list.txt。name_list.txt的内容由cat命令输出,通过管道传递给while循环。while循环接到name_list.txt第一行的内容后,读入到变量name中,echo命令显示Good morning,Tom。同理,读入第二行后,显示显示Good morning,Jack……直到文件内容读入完毕。while循环结束后,所有的显示并未出现在屏幕,而是重定向到临时文件。查看一下临时文件是否存在:

978-7-111-48202-4-Chapter06-119.jpg

从临时文件的名字可知脚本运行时的进程ID是29861。查看临时文件的内容:

978-7-111-48202-4-Chapter06-120.jpg

临时文件tmp_name29861就是在原name_list.txt文件的基础上,每行前面增加了Good morning。

脚本while_cat_redirection.sh的最后一行为cptmp_name$$$1,就是将临时文件复制为name_list.txt。复制之后,name_list.txt的内容与临时文件一致,每行的前面增加了“早安”,查看一下新的name_list.txt:

978-7-111-48202-4-Chapter06-121.jpg

在对文件file.txt的每一行进行相同或有规律的处理时,常用:

978-7-111-48202-4-Chapter06-122.jpg

也常用:

978-7-111-48202-4-Chapter06-123.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈