学以致用,简单做一些shell的入门案例

一、九九乘法表

脚本

#!/bin/bash

a=0										# 设置变量
b=0										# 设置变量
# 使用for循环
for ((a=1;a<=9;a++))					# 变量a=1,并且要小于等于9,每次加1
do
	# 设置内循环
    for ((b=1;b<=a;b++))				# 变量b=1,并且小于等于a,每次加1
    do
    c=$[$a*$b]							# 乘法运算,结果等于a*b
    echo -ne "$a*$b=$c\t"				# 输出,-n代表

    done

echo ""

done

示意图

在这里插入图片描述

二、验证密码输入是否正确,三次机会

脚本

read -p "请输入密码:" a				# 提示信息
passwd=123							# 设置正确密码

if [ $a != $passwd ];then			# 设置循环
    echo "密码错误!"
  else
    echo "正确!"
  exit								# 退出循环,这里要用exit退出,否则会进入下一循环
fi

read -p "你还有两次机会!:" b        # 设置第二次循环

if [ $b != $passwd ];then
    echo "错误!"
  else
    echo "正确!"
  exit
fi

read -p "最后一次!:" c             # 设置第三次

if [ $c != $passwd ];then
    echo "错误!"
  else
    echo "正确!"
  exit
fi

示意图

在这里插入图片描述

三、查询本机用户是否存在,不存在则选择是否创建

脚本

read -p "请输入用户名:" a					# 输入变量
grep $a /etc/passwd &>/dev/null				# 在系统用户文件内查询是否有这个用户

if [ $? = 0 ];then							# 前面输入回执为0(正确)时
  echo "该用户已存在!"						# 提示信息
  exit										# 正确就退出
else
  read -p "查无此人,是否创建?(y/n):" y		# 不正确就提示是否创建
 
   if [ $y = y ];then						# 需要就y,对应上后继续
   useradd $a								# 创建用户命令
   read -p "请输入新用户密码:" b				# 提示输入密码
   echo "$b" | passwd --stdin $a			# 将密码导入进

   else
   exit
   fi
fi

示意图

在这里插入图片描述

四、检测指定网段内的主机通信状况,并导出正确的主机IP

脚本

for a in 192.168.253.{8..12}					# 选择需要查询的网段范围
do
ping -c 2 -i 0.5 -w 2 $a &>/dev/null			# ping命令测试,并将多余的信息导入到黑洞文件内

 if [ $? = 0 ];then								# 未报错的继续
echo "主机正常"									# 提示信息
echo $a >> /opt/lianxi/host_ip					# 导入到指定文件内

 else 
echo "主机离线"									# 报错的提示信息

 fi
done

示意图

在这里插入图片描述

五、根据用户名解锁对应的压缩包

脚本

read -p "请输入文件名:" aa				# 输入压缩包名称

case $aa in								# 使用case循环
*.tar.gz)								# 压缩包为gizp格式
tar zxvf $aa -C /opt

;;

*.tar.bz2)								# 压缩包为bzip2格式
tar jxvf $aa -C /opt

;;

*)										# 输入错误
echo "请输入正确的名称!"

esac

示意图

在这里插入图片描述

六、搜索指定位置的可执行文件

脚本

IFS=$IFS:
c=0
d=0

for i in `echo $PATH`			
do
cd $i							# 进入变量
echo ls $i | wc -l				# 输出
  echo "$i:"
  for a in `ls $i`
  do
let d++

test -x $a						# 挑选“可执行文件”
 if [ $? -eq 0 ];then
     echo "$a--可执行"
      let c++
    fi
  done
done

echo "总数:$d"
echo "可执行的文件总数:$c"

示意图

在这里插入图片描述

七、随机生成八位数密码

脚本

a="0123456789abcdefghijklmnopqistuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"				# 密码可用数
b=""
for i in {1..8}						# 选择位数
do
   c=$[RANDOM%${#a}]				# RANDOM表示随机一个0-65535密码
   d=${a:c:1}
   b+=$d

done
 echo $b

示意图

在这里插入图片描述

八、输出一个可变菱形

脚本

read -p "请输入边长:" o
								#使用拼接方法,所以需要先输出一个空白的倒直角三角形
for ((a=o; a>=1; a--))
do
echo -n " "
  for ((b=1; b<a; b++))
  do
  echo -n " "
  done
  for ((c=o; c>=a; c--))		#输出三角形
  do
  echo -n "*"
  done
  for ((d=o; d>a; d-- ))
  do
  echo -n "*"
  done
echo " "
done
#第二段,输出下半部分的三角形
for ((e=2; e<=o; e++))
do
echo -n " "
  for ((f=1; f<e; f++))
  do
  echo -n " "
  done
  for ((g=o; g>=e; g--))
  do
  echo -n "*"
  done
  for ((h=o; h>e; h--))
  do
  echo -n "*"
  done
echo " "
done

示意图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值