Shell脚本大全
一、打印可以能登录的用户
# 找出能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理 user=$(awk -F: "/bash$/{print $1}" /etc/passwd) for i in $user do awk -F: -v x=$i "$1==x{print $1,$2}" /etc/shadow done
二、统计Linux进程相关数量信息
# 统计 Linux 进程相关数量信息 running=0 sleeping=0 stoped=0 zombie=0 # 在 proc 目录下所有以数字开始的都是当前计算机正在运行的进程的进程 PID # 每个 PID 编号的目录下记录有该进程相关的信息 for pid in /proc/[1‐9]* do procs=$[procs+1] stat=$(awk "{print $3}" $pid/stat) # 每个 pid 目录下都有一个 stat 文件,该文件的第 3 列是该进程的状态信息 case $stat in R) running=$[running+1] ;; T) stoped=$[stoped+1] ;; S) sleeping=$[sleeping+1] ;; Z) zombie=$[zombie+1] ;; esac done echo "进程统计信息如下" echo "总进程数量为:$procs" echo "Running 进程数为:$running" echo "Stoped 进程数为:$stoped" echo "Sleeping 进程数为:$sleeping" echo "Zombie 进程数为:$zombie"
三、判断用户输入的数据类型
# 判断用户输入的数据类型(字母、数字或其他) read -p "请输入一个字符:" KEY case "$KEY" in [a-z]|[A-Z]) echo "字母" ;; [0-9]) echo "数字" ;; *) echo "空格、功能键或其他控制字符" esac
四、判断用户输入的是Yes或NO
read -p "Are you sure?[y/n]:" sure case $sure in y|Y|Yes|YES) echo "您的选择是 $sure" ;; n|N|NO|no) echo "您的选择是 $sure" ;; *) echo "输入有误";; esac
五、判断文件或目录是否存在
# 判断文件或目录是否存在 if [ $# -eq 0 ] ;then echo "未输入任何参数,请输入参数" echo "用法:$0 [文件名|目录名]" fi if [ -f $1 ];then echo "该文件,存在" ls -l $1 else echo "没有该文件" fi if [ -d $1 ];then echo "该目录,存在" ls -ld $2 else echo "没有该目录" fi
六、打印各种时间格式
# 打印各种时间格式 echo "显示星期简称(如:Sun)" date +%a echo "显示星期全称(如:Sunday)" date +%A echo "显示月份简称(如:Jan)" date +%b echo "显示月份全称(如:January)" date +%B echo "显示数字月份(如:12)" date +%m echo "显示数字日期(如:01 号)" date +%d echo "显示数字年(如:01 号)" date +%Y echo "显示年‐月‐日" date +%F echo "显示小时(24 小时制)" date +%H echo "显示分钟(00..59)" date +%M echo "显示秒" date +%S echo "显示纳秒" date +%N echo "组合显示" date +"%Y%m%d %H:%M:%S"
七、阶乘
read -p "请输入你想要的阶乘" p jiecheng=1 for ((i=1;i<=$p;i++)) do jiecheng=$[jiecheng*i] done echo $jiecheng
八、执行开机启动脚本
#下面两个注释不能少 #chkconfig: 35 80 90 #description:开机自动启动的脚本程序 date +%Y >> /yhj/sh/kai.log echo "设置开机自启" >> /yhj/sh/kai.log echo "启动完毕" >> /yhj/sh/kai.log echo "-------------------------------------------------" >> /yhj/sh/kai.log
将写好的lu.sh脚本移动到/etc/init.d/目录下
cp lu.sh /etc/init.d/
#添加到开机启动中 chkconfig --add lu.sh chkconfig lu.sh on