如果将运维比作手链,将珍珠比作服务,那么将珍珠串起来的线就是Shell,作为实现Linux系统自动管理以及自动化运维所必备的Shell脚本,其重要性便不言而喻。

每一位合格的Linux系统管理员或运维工程师,都应该将熟练编写Shell脚本视为基本技能之一,只有这样才能减少不必要的劳动。但是新人在编写脚本时却只会:#!/bin/bash,所以今天就给大家分享100个经典实用的脚本范例,手把手教你写Shell脚本。

这100个脚本范例从基础到进阶均涵盖,有侧重地提高编写能力,结构清晰准确,PDF格式,可自由复制,对照练习,很适合不会写Shell脚本的朋友提升实际编写能力,强烈建议收藏学习。

试试戳戳这里

通过位置变量创建 Linux 系统账户及密码

#!/bin/bash
#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
useradd    "$1"
echo "$2"  |  passwd  ‐‐stdin  "$2"

依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

#!/bin/bash
read ‐p "请输入一个整数:" num1
read ‐p "请输入一个整数:" num2
read ‐p "请输入一个整数:" num3
#不管谁大谁小,最后都打印 echo "$num1,$num2,$num3"
#num1 中永远存最小的值,num2 中永远存中间值,num3 永远存最大值
#如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调
tmp=0
#如果 num1 大于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最小值
if [ $num1 ‐gt $num2 ];then      
tmp=$num1
num1=$num2
num2=$tmp
fi
#如果 num1 大于 num3,就把 num1 和 num3 对调,确保 num1 变量中存的是最小值
if [ $num1 ‐gt $num3 ];then      
tmp=$num1
num1=$num3
num3=$tmp
fi
#如果 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值
if [ $num2 ‐gt $num3 ];then   
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "排序后数据为:$num1,$num2,$num3"

9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)

#!/bin/bash
for  i  in  `seq 9`
do
         for  j   in  `seq $i`
         do
                     echo ‐n  "$i*$j=$[i*j]  "
         done
         echo
done

编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件

#!/bin/bash
#执行脚本时,需要给脚本添加位置参数
#脚本名  txt   doc(可以将 txt 的扩展名修改为 doc) #脚本名  doc  jpg(可以将 doc 的扩展名修改为 jpg)
for  i   in   "ls *.$1"
do
        mv  $i    ${i%.*}.$2
done

编写一个点名器脚本

#!/bin/bash
#该脚本,需要提前准备一个 user.txt 文件
#该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名
while :
do
#统计 user 文件中有多少用户
line=`cat user.txt |wc ‐l`
num=$[RANDOM%line+1]
sed ‐n "${num}p"  user.txt
sleep 0.2
clear
done

统计/var/log 有多少个文件,并显示这些文件名

#!/bin/bash
#使用 ls 递归显示所有,再判断是否为文件,如果是文件则计数器加 1
cd  /var/log
sum=0
for   i   in   `ls  ‐r *`
do
       if  [  ‐f  $i  ];then
            let sum++
            echo "文件名:$i"
        fi
done
echo   "总文件数量为:$sum"

检查特定的软件包是否已经安装

#!/bin/bash
if [ $# ‐eq 0 ];then
echo "你需要制定一个软件包名称作为脚本参数"
echo "用法:$0 软件包名称 ..."
fi
#$@提取所有的位置变量的值,相当于$*
for package in "$@"
do
if rpm ‐q ${package} &>/dev/null ;then
   echo ‐e "${package}\033[32m 已经安装\033[0m"
else
   echo ‐e "${package}\033[34;1m 未安装\033[0m"
fi
done

测试用户名与密码是否正确

#!/bin/bash
#用户名为 tom 并且密码为 123456,则提示登录成功,否则提示登录失败
read ‐p "请输入用户名:"  user
read ‐p "请输入密码:"    pass
if [ "$user" == 'tom' ‐a "$pass" == '123456' ];then
echo "Login successful"
else
echo "Login Failed"
fi

熟练地编写Shell脚本是运维人员的基本功,切不可敷衍了事,这100个经典有趣的Shell脚本范例,赶快mark起来!

试试戳戳这里

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐