shell练习题

前端之家收集整理的这篇文章主要介绍了shell练习题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


基础练习

练习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;36myouhaveinputedawrongnumber\e[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$line\e[0m";

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

#彩色打印字符
echo-e"\e[1;36m$user\'sshellis$shell\e[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$i\e[0m\c";
done

echo

测试

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

猜你在找的Bash相关文章