加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell练习题

发布时间:2020-12-15 16:27:04 所属栏目:安全 来源:网络整理
导读:基础练习 练习1:打印图形-打印n行n列矩阵的图形 #!/bin/bash#我的shell#Date:2017-8-25#Author:XianWei#判断输入的是否为数字while((1))do{read-p"Pleaseinputanumber:"numif[$num-gt0]/dev/null21thenbreak#如果输入的是一个数字,则跳出循环elseecho"Erro


基础练习

练习1:打印图形-打印n行n列矩阵的图形

#!/bin/bash

#我的shell
#Date:2017-8-25
#Author:XianWei

#判断输入的是否为数字
while((1))
do
{
read-p"Pleaseinputanumber:"num
if[$num-gt0]>/dev/null2>&1
then
break#如果输入的是一个数字,则跳出循环
else
echo"Error,Pleaseinputanumber"
fi
}
done



#打印符号
for((i=0;i<$num;i++))#5row
do
{
for((j=0;j<`echo"2*$num"|bc`;j++))#10cols
do
echo-n"■"
done
echo
}
done

测试结果

root@vmUbu:/home/dell/shell#./27.sh
Pleaseinputanumber:5
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
root@vmUbu:/home/dell/shell#./27.sh
Pleaseinputanumber:10
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
■■■■■■■■■■
root@vmUbu:/home/dell/shell#./27.sh
Pleaseinputanumber:adc
Error,Pleaseinputanumber
Pleaseinputanumber:4
■■■■
■■■■
■■■■
■■■■
root@vmUbu:/home/dell/shell#

练习2:打印图形-打印三角形图形


结果如下:

root@vmUbu:/home/dell/shell#./28.sh
Pleaseinputanumber:5
*
***
*****
*******
*********
root@vmUbu:/home/dell/shell#./28.sh
Pleaseinputanumber:6
*
***
*****
*******
*********
***********
root@vmUbu:/home/dell/shell#

代码:

#!/bin/bash

#我的shell
#Date:2017-2-11
#Author:XianWei

#判断输入的是否为数字
while((1))
do
{
read-p"Pleaseinputanumber:"num
if[$num-gt0]>/dev/null2>&1
then
break#如果输入的是一个数字,则跳出循环
else
echo"Error,Pleaseinputanumber"
fi
}
done



#打印符号
for((i=1;i<=$num;i++))
do
{
#每行打印空格数
for((j=1;j<=`echo"$num-$i"|bc`;j++))
do
echo-n""
done

#每行打印*的个数
for((h=1;h<=`echo"2*$i-1"|bc`;h++))
do
echo-n"*"
done
printf"n"
}
done


练习3:case的基本使用

代码

#!/bin/bash

#Date:2017-2-12
#Author:XianWei

read-p"selectanumberfrom1-4:"num

case$numin

1)
echo-e"e[1;36myouhaveinputednumber"1"e[0m";
;;

2)
echo-e"e[1;36myouhaveinputednumber"2"e[0m";
;;
3)
echo-e"e[1;36myouhaveinputednumber"3"e[0m";
;;
4)
echo-e"e[1;36myouhaveinputednumber"4"e[0m";
;;
*)
echo-e"e[41mError!e[0m";
echo-e"e[1;36myouhaveinputedawrongnumbere[0m";
;;
esac


练习:脚本中IFS的使用

代码:

#!/bin/bash

oldIFS=$IFS;#保存原分隔符
IFS=",";#将分隔符设置为:

line="root:x:0:0:root:/root:/bin/bash";
line2="root,x,root,/root,/bin/bash";

echo-e"e[1;35m$linee[0m";

count=0;
foriin$line2
do
[$count-eq0]&&user=$i;#前面成功,才之后面
[$count-eq6]&&shell=$i;
letcount++;#let使变量自增
done

#彩色打印字符
echo-e"e[1;36m$user'sshellis$shelle[0m";

IFS=$oldIFS;#还原分隔符


结果

root@vmUbu:/home/dell/shell#./repeat.sh
root:x:0:0:root:/root:/bin/bash
root'sshellis/bin/bash

练习题:until的使用

#!/bin/bash

#Date:2017-02-12
#Author:XianWei

i=10;
until[$i-le0]
do
leti--;
echo-n-e"e[1;36m$ie[0mc";
done

echo

测试

root@vmUbu:/home/dell/shell#./until.sh
9876543210

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读