您的位置:首页 > 运维架构 > Linux

linux 常用脚本,用到的时候快速修改

2017-09-04 08:38 232 查看

google的一篇关于shell的文章

Google Style Guides-Shell Style Guide(翻译)

Shell的一个例子

1.递归遍历递归删除文件夹中的*.exe .out *~文件(因为要往github上面提交acm的一些代码,而自己的acm目录很分成几个网站的代码,有多级子目录,需要把可执行文件删除)

#!/bin/bash
#递归删除文件夹中的*.exe *.out *~文件
#示例 bash del.sh .
function del_file_from_dir(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
echo $file " is dir"
rm -rf $1"/"$file/*.exe $1"/"$file/*.out $1"/"$file/*~
#
del_file_from_dir $1"/"$file
else
echo $file
fi
done
}

del_file_from_dir $1

2.访问网站 下载文件(因为要学习hadoop权威指南,需要天气数据所以写了个脚本,从ftp上下载文件,并把文件处理成符合规范的数据)
从ftp://ftp.ncdc.noaa.gov/pub/data/gsod下载的数据是gsod_1901.tar ~ gsod_2016.tar 的数据

#!/bin/bash
for i in {1901..2016}
do
cd /home/Administrator/ncdc/
wget ftp://ftp.ncdc.noaa.gov/pub/data/gsod/$i/gsod_$i.tar done

3.要把文件名字变成1901.tar ~ 2016.tar名字的数据,进而压缩成1901.tar.bz2 ~ 2016.tar.bz2类型的数据。把gsod_1901.tar ~ gsod_2016.tar改成1901.tar.bz2 ~ 2016.tar.bz2

#!/bin/bash
#把gsod_*.tar改名为*.tar,并把tar文件压缩成bz2文件
for i in *.tar
do
nowname=${i:5}
#echo "$i"
#echo ${nowname}
mv "$i" "${nowname}"
tar -jcf "${nowname}".bz2 "${nowname}"
rm -rf "${nowname}"
done

4.要把文件名字变成1901.tar ~ 2016.tar名字的数据,进而压缩成1901.tar.bz2 ~ 2016.tar.bz2类型的数据。把gsod_1901.tar ~ gsod_2016.tar改成1901.tar.bz2 ~ 2016.tar.bz2

测试while循环

# 执行命令并且check
# 没执行一次文件翻倍
#/bin/sbin

declare -i COUNTER=0
while ((COUNTER<=5));
do
let ++COUNTER
echo $COUNTER
done

测试 每次执行
main2 -i $file1 -o $file2 >> txtfile.log.txt
后file1文件变为原来的2倍,并且比较file1和file2的sha1sum值是否相同。

用到的shell知识点

while循环有限次;

shell接受命令执行命令的返回值;

字符串截取文件第4节

shell的if else fi判断;

shell的变量值声明、初始化、自增;

# 执行命令并且check
# 每执行一次文件翻倍
#/bin/sbin

file1=file.txt
file2=file.txt.out

declare -i COUNTER=0
while ((COUNTER<=10));
do
runresult=`main2 -i $file1 -o $file2 >> txtfile.log.txt`
file1_sha1=`sha1sum $file1`
file2_sha1=`sha1sum $file2`
file1_sha1=${file1_sha1%% *} #删除空格右边的字符
file2_sha1=${file2_sha1%% *} #删除空格右边的字符
echo '第' $COUNTER "次测试" >> txtfile.log.txt
echo  -n $file1 "与" $file2 "的sha1sum值相同 ? " >> txtfile.log.txt
if [ $file1_sha1 == $file2_sha1 ];then
echo "True" >> txtfile.log.txt
else
echo "False" >> txtfile.log.txt
fi
echo '\n' >> txtfile.log.txt
let ++COUNTER
rm -rf *.symbol
rm -rf *.esi
cat $file1 >> tmp
cat tmp > $file1
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: