实验1
实验要求:将一个点分十进制格式的IP地址转换成点分二进制格式。
创建脚本:
#!/bin/bash #将一个点分十进制格式的IP地址转换成点分二进制格式 read -p "请输入IP地址:" ip #借用一个临时变量先保存IFS的原始值 IFS_OLD=$IFS #将"."设置为分隔符 IFS='.' j=0 for num in $ip do sum= for i in {1..8} do #除以2取余数 var=$[num%2] #余数倒序排列 sum=$var$sum num=$[num/2] done echo -n "$sum" let j++ #在前3个字段后面加"." if [ $j -le 3 ] then echo -n "." fi done #用于换行 echo " " #还原变量IFS的原始值 IFS=$IFS_OLD 复制代码
网络异常,图片无法展示
|
执行脚本:
[root@localhost ~]# bash f09.sh 请输入IP地址:192.168.72.15 11000000.10101000.01001000.00001111 [root@localhost ~]# bash f09.sh 请输入IP地址:192.168.72.129 11000000.10101000.01001000.10000001 复制代码
网络异常,图片无法展示
|
实验2
实验要求:写一个逛网上商城选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
创建脚本:
#!/bin/bash #写一个逛网上商城选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户>是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。 #n代表去了几家店购物 n=1 #sum代表购物总额 sum=0 #只要不退出就会一直执行下去 while true do echo "欢迎来到第${n}家店铺" read -p "是否进入看看?(yes/no)" doing while [ "$doing" = "yes" ] do echo -e "1:衣服500元\n2:裤子400元\n3:鞋子350元\n4:帽子150元\n5:袜子50元\n6:放弃购物" read -p "请选择你想购买的商品序号:" num case $num in 1) echo "衣服购买成功" sum=$[sum+500] ;; 2) echo "裤子购买成功" sum=$[sum+400] ;; 3) echo "鞋子购买成功" sum=$[sum+350] ;; 4) echo "帽子购买成功" sum=$[sum+150] ;; 5) echo "袜子购买成功" sum=$[sum+50] ;; 6) echo "放弃购买" ;; *) echo "输入有误" esac read -p "是否继续在本店购物?(yes/no)" doing done read -p "是否换一家店继续购物?(yes/no)" go if [ "$go" = "yes" ] then let n++ else break fi done echo "您一共逛了 ${n} 家店" echo "您一共消费了 ${sum} 元" 复制代码
执行脚本:
[root@yuji sh]# bash yan2.sh 欢迎来到第 1 家店铺 是否进入看看?(yes/no)yes 1:衣服500元 2:裤子400元 3:鞋子350元 4:帽子150元 5:袜子50元 6:放弃购物 请选择你想购买的商品序号:5 袜子购买成功 是否继续在本店购物?(yes/no)no 是否换一家店继续购物?(yes/no)yes 欢迎来到第 2 家店铺 是否进入看看?(yes/no)yes 1:衣服500元 2:裤子400元 3:鞋子350元 4:帽子150元 5:袜子50元 6:放弃购物 请选择你想购买的商品序号:3 鞋子购买成功 是否继续在本店购物?(yes/no)no 是否换一家店继续购物?(yes/no)no 您一共逛了 2 家店 您一共消费了 400 元 复制代码
网络异常,图片无法展示
|
实验3
实验要求:输出环境变量PATH的目录所包含的所有可执行文件。
创建脚本:
#!/bin/bash #输出环境变量PATH的目录所包含的所有可执行文件 IFS_OLD=$IFS IFS=$IFS':' for dir in $PATH do for file in $(find $dir -type f) do if [ -x $file ] then echo "$file 有执行权限" fi done done IFS=$IFS_OLD 复制代码
网络异常,图片无法展示
|
实验4
实验要求:
首先执行mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt。之后输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件。
创建脚本:
[root@localhost sh]# mkdir -p /root/bin/aa/bb/cc/dd [root@localhost sh]# touch /root/bin/aa/bb/cc/dd/abc.txt [root@localhost sh]# vim yan4.sh #!/bin/bash #mkdir -p /root/bin/aa/bb/cc/dd #touch /root/bin/aa/bb/cc/dd/abc.txt #输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件 IFS_OLD=$IFS IFS=$IFS':' for fd in $PATH do #查找所有目录文件和普通文件 files=$(find $fd -type f -o -type d) for a in $files do #判断是否为目录,是则输出 if [ -d $a ] then echo "$a 为目录" #判断是否为普通文件且没有执行权限,满足条件则输出 elif [ -f $a ]&&[ ! -x $a ] then echo "$a 文件没有执行权限" fi done done IFS=$IFS_OLD 复制代码
网络异常,图片无法展示
|
执行脚本:
[root@yuji sh]# bash yan4.sh /usr/local/sbin 为目录 /usr/local/bin 为目录 /usr/sbin 为目录 /usr/bin 为目录 /root/bin 为目录 /root/bin/aa 为目录 /root/bin/aa/bb 为目录 /root/bin/aa/bb/cc 为目录 /root/bin/aa/bb/cc/dd 为目录 /root/bin/aa/bb/cc/dd/abc.txt 文件没有执行权限 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
实验要求:输出菱形,并实现可通过输入数值的大小来伸缩菱形的大小。
创建脚本:
[root@localhost /sh]# vim yan5.sh #!/bin/bash #输出菱形,并实现可通过输入数值的大小来伸缩菱形的大小 read -p "请定义菱形的大小:" size for ((i=1;i<=$size;i++)) do for ((a=$size;a>=$i;a--)) do echo -n " " done chang=$[ 2*$i -1 ] for ((b=1;b<=$chang;b++)) do echo -n "*" done echo done for ((i=2;i<=$size;i++)) do for ((c=1;c<=$i;c++)) do echo -n " " done for ((d=$size;d>=$i;d--)) do echo -n "*" done for ((e=$[$size-1];e>=$i;e--)) do echo -n "*" done echo done 复制代码
网络异常,图片无法展示
|
执行脚本:
[root@yuji sh]# bash yan5.sh 请定义菱形的大小:6 * *** ***** ******* ********* *********** ********* ******* ***** *** * 复制代码
网络异常,图片无法展示
|