学以致用,简单做一些shell的入门案例
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学以致用,简单做一些shell的入门案例相关的知识,希望对你有一定的参考价值。
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
示意图
以上是关于学以致用,简单做一些shell的入门案例的主要内容,如果未能解决你的问题,请参考以下文章