原题回顾:打印当前文件夹下所有的.txt文件的最后一行到新文件newFile.txt中
其答案最后解答如下
在实现的过程中遇到了一些问题,也是一些重要的知识点。
shell脚本的头部加上bash所在的位置
如#!/bin/bash
使用for遍历一个命令返回的列表
可以使用``符号包围一个命令来获取其返回值,如ls .
返回当前目录下所有的文件(包括目录),for循环取得其下所有的文件名称。
for的基本语法格式是
使用if语句进行判断变量的值
引用变量的值使用$variant,其中if语句的格式为
condition可以用test condition,或者[ condition ]或者[[ condition ]]注意方括号condition左右都有空格,其中[[]]可以直接使用>,<等符号,而[]能够使用的符号比较少。
在[[]]condition中使用正则表达式进行匹配,例如[[ $file =~ .*.txt ]],匹配文件名后缀名为txt的文件,注意=~符号的前后也要右空格,并且正则表达式是不加引号的,如果要加,前面的变量也要加上。
正则表达式.*代表任意一串字符,*是代表前面的字符重复0-1次而已。^pattern$, ^代表以什么开头,$代表以什么结尾
[ -f $file ]代表文件是一个文件而不是目录,两个表达式可以用&&,||连接
读一个文件的最后一行
tail -number file显示文件的后几行
head -number file显示文件的前几行
重定向符号
单个>代表重定向到文件,但是会覆盖原来的内容,两个>>代表后来添加