shell脚本学习积累

文章目录

  • 创建shell脚本并运行
  • 条件测试
  • 基础shell脚本
    • 打包过去24小时内修改过的文件
    • 自动解压 bzip2, gzip 和 zip不同类型的压缩包
    • 打印一个rpm包的统计信息【含有输入参数】

创建shell脚本并运行

方式1:
vim myshell.sh
#文件开头是#!/bin/bash 或 #!/bin/sh
sh myshell.sh

方式2:
vim myshell
#需要设置文件为可执行的状态
chmod +x myshell
#作为可执行文件直接执行,有的后面可带输入参数
./myshell

条件测试

博主-条件测试传送门

&&的妙用,并用echo来反馈前一个命令任务是否成功:

基础shell脚本

打包过去24小时内修改过的文件

#!/bin/bash
tar -zcvf lastmodify.tar.gz `find . -mtime 1 -type f -print`

注意`` 可以将【一个命令的输出】作为作为【另一个命令的输入参数】,其中mtime是过去24小时修改的意思

自动解压 bzip2, gzip 和 zip不同类型的压缩包

创建一个smartzip的脚本实现,能实现自动的解压缩bzip2, gzip 和 zip不同类型的压缩包。
思路:利用file命令首先判断文件的类型,按照字符串的匹配来使用不同的解压缩命令进行解压缩

#!/bin/sh
# USAGE:smartzip file.zip
# EXAMPLE:smartzip articles.zip

#ftype变量是查询文件类型后的字符串信息,利用case来进行字符串匹配
#$1 就是脚本命令中输入参数的第一个
ftype=`file "$1"`
case "$ftype" in
#file查出的信息开头就是那个文件的名字,所以字符串拼接头就是$1,冒号后开始具体的文件类型
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) error "File $1 can not be uncompressed with smartzip";;
esac

case的脚本语法形式为:
shell脚本学习积累_第1张图片

打印一个rpm包的统计信息【含有输入参数】

vim一个showrpm的脚本文件,同时chmod +x showrpm命令

#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm  <-- 实现查看某个文件下的rpm包的统计信息
# 正常测试:需要使用./showrpm rpmfile1 rpmfile2 来完成

for rpmpackage in $*; do
# -r判断这个变量属性是否可以read
if [ -r "$rpmpackage" ];then
echo "=============== $rpmpackage =============="
rpm -qi -p $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
fi
done

注意这里的$*表示输入行命令参数的所有值,如果是$1表示输入命令行参数中的第一个参数。

for-loop的脚本语法形式为

你可能感兴趣的:(shell)