Centos7学习笔记(十三)- 一个解压用脚本的详细说明

#!/bin/bashcd /home/tar#ls出该目录下的文件,并导出所需文件名到file.log文件中ls *.tar.gz >file.logls *.tgz >>file.log 2>/dev/nullls *.tar.bz2 >>file.log 2>/dev/null#统计file.log到底有多少文件num=$(cat file.log|wc -l)#for循环处理去解压for ((i=1;i<="$num";i=i+1))do        bb=$(cat file.log|awk 'NR=='$i' {print $1}')        #用if判断去处理不同的压缩文件        #result=$(echo $bb|grep "bz2")        #if [ -n "$result" ]         #此处,通过判断grep $bb的结果,是否为非空,来判定bz2文件                           #补充说明,由于用[]来做的测试,那么$变量在此处需加双引号,加引号后,[]和[[]]相同        #if [[ "$result" != "" ]]    #此句,同上一句方式一样,语句不同,注意[]和[[]]其实是一样的        # if [[ "$bb" =~ bz2 ]]     #此处,是用操作符的方式匹配bz2,必须用[[]]方式        if [ "$bb" == *bz2 ]        #此处,用通配符*的方式,去判断$bb是否为.bz2文件,此时,[]和[[]]相同        then                tar -jxvf $bb        else                tar -zxvf $bb        fidonerm -f /home/tar/file.log

该脚本涉及到了对一个变量含有某字符串的三种判断方式,并且,说明了[]和[[]]在不同情况下的作用不同。

 

image.png

 

一般情况下,对变量做测试,尽量将其加双引号,将其视为字符串比较。具体使用建议,参见https://www.cnblogs.com/f-ck-need-u/p/7427357.html

image.png

2020 9月 04