Centos7学习笔记(十三)- 一个解压用脚本的详细说明
#!/bin/bash
cd /home/tar
#ls出该目录下的文件,并导出所需文件名到file.log文件中
ls *.tar.gz >file.log
ls *.tgz >>file.log 2>/dev/null
ls *.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
fi
done
rm -f /home/tar/file.log该脚本涉及到了对一个变量含有某字符串的三种判断方式,并且,说明了[]和[[]]在不同情况下的作用不同。

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


