1.99乘法表
#!/bin/bash
#99乘法表
for ((second=1; second<=9; second++))
do
for ((first=1; first<=second; first++))
do
echo -n -e "${first}*${second}=$[first*second]\t"
done
echo ''
done
#########
首先定义了一个外循环变量second,初始值为1,循环条件是second小于等于9。
在外循环内部,定义了一个内循环变量first,初始值为1,循环条件是first小于等于second。4
在内循环内部,使用echo命令输出"first*{second}=[first*second]\t",其中[first*second]表示计算first和second的乘积。
在内循环结束后,使用echo命令输出一个空行。
最后结束外循环。
2.等腰三角 图形拼接的方式
#!/bin/bash
#等腰三角 图形拼接的方式
#控制三角形的行数
for ((a=1; a<=9; a++))
do
#输出空格倒三角
for ((i=9; i>a; i--))
do
echo -n " "
done
#输出正直角三角
for ((b=1; b<=a; b++))
do
echo -n "*"
done
#输出小一号的正直角三角,第一行不输出*
for ((c=1; c<a; c++))
do
echo -n "*"
done
#每行换行
echo ""
done
################
第一个内层循环用于输出空格,以形成倒三角形的形状。它从9开始递减到当前行数a,每次输出一个空格。
第二个内层循环用于输出正直角三角形的星号(*)。它从1递增到当前行数a,每次输出一个星号。
第三个内层循环用于输出小一号的正直角三角形的星号(*),但第一行不输出星号。它从1递增到当前行数a-1,每次输出一个星号。
3.通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件
#!/bin/bash
#通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件
length=$(echo $PATH | awk -F: '{print NF}')
path=$PATH
for ((i=1; i<=length; i++))
do
folder=${path%%:*}
path=${path#*:}
find $folder -type d
files=$(find $folder -type f)
for j in $files
do
if [ ! -x $j ];then
echo "$j 为不执行文件"
fi
done
done
##############
获取PATH环境变量中包含的目录数量,赋值给变量length。
将PATH环境变量的值赋给变量path。
使用for循环遍历每个目录。
在每次循环中,提取path中的第一个目录,赋值给变量folder。
更新path,去掉已经提取的目录。
使用find命令查找当前目录下的所有子目录。
使用find命令查找当前目录下的所有文件,并将结果赋值给变量files。
使用for循环遍历files中的每个文件。
判断当前文件是否为不可执行文件,如果是,则输出文件名。
4.写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
#!/bin/bash
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
#店数的变量
n=1
#购物总额的变量
sum=0
while true
do
echo "来到第${n}家商店的门口"
read -p "是否进店逛逛?(yes/no)" doing
until [ "$doing" == "no" ]
do
echo -e "欢迎光临!\n1:衣服¥500\n2:裤子¥400\n3:鞋子¥300\n4:帽子¥200\n5:袜子¥100\n6:放弃购买"
read -p "请选择需要购买的商品序号:" num
case $num in
1)
echo "衣服购买成功"
let sum+=500
;;
2)
echo "裤子购买成功"
let sum+=400
;;
3)
echo "鞋子购买成功"
let sum+=300
;;
4)
echo "帽子购买成功"
let sum+=200
;;
5)
echo "袜子购买成功"
let sum+=100
;;
6)
echo "放弃购买"
;;
*)
echo "输入错误"
esac
read -p "是否继续在这家店购物?(yes/no)" doing
done
read -p "是否继续逛下一家店?(yes/no)" going
if [ "$going" == "yes" ];then
let n++
else
break
fi
done
echo -e "一共逛了${n}家店,\n合计总消费为${sum}元"
##############################
#!/bin/bash:指定使用bash作为解释器。
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。:注释说明脚本的功能和规则。
n=1:定义变量n为1,表示开始逛第一家商店。
sum=0:定义变量sum为0,表示购物总额初始为0。
while true:无限循环,直到用户决定不再继续逛。
do:循环体开始。
echo "来到第${n}家商店的门口":输出当前逛的是哪一家商店。
read -p "是否进店逛逛?(yes/no)" doing:询问用户是否进入这家商店。
until [ "$doing" == "no" ]:如果用户选择不进入这家商店,则跳出循环。
do:循环体开始。
echo -e "欢迎光临!\n1:衣服¥500\n2:裤子¥400\n3:鞋子¥300\n4:帽子¥200\n5:袜子¥100\n6:放弃购买":列出五种商品供用户选择。
read -p "请选择需要购买的商品序号:" num:读取用户输入的商品序号。
case $num in:根据用户输入的商品序号执行相应的操作。
1):如果用户选择了衣服,输出购买成功信息,并将500加到购物总额中。
2):如果用户选择了裤子,输出购买成功信息,并将400加到购物总额中。
3):如果用户选择了鞋子,输出购买成功信息,并将300加到购物总额中。
4):如果用户选择了帽子,输出购买成功信息,并将200加到购物总额中。
5):如果用户选择了袜子,输出购买成功信息,并将100加到购物总额中。
6):如果用户选择了放弃购买,输出放弃购买的信息。
*):如果用户输入了其他数字,输出输入错误信息。
esac:结束case语句。
read -p "是否继续在这家店购物?(yes/no)" doing:询问用户是否继续在这家店购物。
done:循环体结束。
read -p "是否继续逛下一家店?(yes/no)" going:询问用户是否继续逛下一家店。
if [ "$going" == "yes" ];then:如果用户选择继续逛下一家店,执行下面的代码块。
let n++:将变量n加1,表示逛下一家店。
else:如果用户选择不再继续逛,执行下面的代码块。
break:跳出循环。
fi:结束if语句。
done:循环体结束。
echo -e "一共逛了${n}家店,\n合计总消费为${sum}元":输出总共逛了多少家店以及购物总额。
5.菱形
#!/bin/bash
#菱形
read -p "请输入大小数值:" num
for ((a=1; a<=num; a++))
do
for ((i=num; i>a; i--))
do
echo -n " "
done
c=$[(a*2)-1]
for ((b=1; b<=c; b++))
do
echo -n "*"
done
echo ""
done
for ((a=num-1; a>=1; a--))
do
#输出空格正三角
for ((b=num; b>a; b--))
do
echo -n " "
done
#输出倒等腰三角
c=$[(a*2)-1]
for ((i=1; i<=c; i++))
do
echo -n "*"
done
echo ""
done
######################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
read -p "请输入大小数值:" num:提示用户输入一个数值,并将输入的数值赋值给变量num。
for ((a=1; a<=num; a++)):外层循环,控制打印的行数。
for ((i=num; i>a; i--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((b=1; b<=c; b++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
for ((a=num-1; a>=1; a--)):外层循环,控制打印的行数。
for ((b=num; b>a; b--)):内层循环,控制每行打印空格的数量。
c=$[(a*2)-1]:计算每行星号的数量。
for ((i=1; i<=c; i++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
6.倒等腰三角形,5行
#!/bin/bash
#倒等腰三角形,5行
#外循环控制三角的行数
for ((a=5; a>=1; a--))
do
#输出空格正三角
for ((b=5; b>a; b--))
do
echo -n " "
done
#输出倒等腰三角
c=$[(a*2)-1]
for ((i=1; i<=c; i++))
do
echo -n "*"
done
echo ""
done
#################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
for ((a=5; a>=1; a--)):外层循环,控制打印的行数。
for ((b=5; b>a; b--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((i=1; i<=c; i++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
7.等腰三角形
#!/bin/bash
#等腰三角形
read -p "请输入三角形的大小数值:" num
#控制三角形的行数
for ((a=1; a<=num; a++))
do
#输出倒三角每行的空格数,第一行4个,第二行3个,每行做递减
for ((i=num; i>a; i--))
do
echo -n " "
done
#输出等腰三角每行的*数,第一行输出1个,第二行3个,第三行5个,以此类推
c=$[(a*2)-1]
for ((b=1; b<=c; b++))
do
echo -n "*"
done
echo ""
done
#################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
read -p "请输入三角形的大小数值:" num:提示用户输入一个数值,并将输入的数值赋值给变量num。
for ((a=1; a<=num; a++)):外层循环,控制打印的行数。
for ((i=num; i>a; i--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((b=1; b<=c; b++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
8.倒直角三角形
#!/bin/bash
#倒直角三角形
#外循环控制行数
for ((a=1; a<=9; a++))
do
#内循环控制每行输出的*数量,第一行输出最多,每行做递减
for ((b=9; b>=a; b--))
do
echo -n "*"
done
echo ""
done
#############################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
for ((a=1; a<=9; a++)):外层循环,控制打印的行数。
for ((b=9; b>=a; b--)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
9.9.正直角三角形
#!/bin/bash
#正直角三角形
#外循环控制三角的行数
for ((a=9; a>=1; a--))
do
#内循环控制每行输出的 * 的数量,第一行输出一个*,每行递增
for ((b=9; b>=a; b--))
do
echo -n "*"
done
echo ""
done
################
外循环控制三角的行数,从9到1递减;
内循环控制每行输出的 * 的数量,第一行输出一个*,每行递增;
使用echo -n ""在同一行输出多个;
使用echo ""换行
10.输出长度为9个*,4行的矩形
#!/bin/bash
#输出长度为9个*,4行的矩形
for ((a=1; a<=4; a++))
do
for ((b=1; b<=9; b++))
do
echo -n '*'
done
echo ''
done
##########
#!/bin/bash:这是一个shebang,指定了脚本的解释器为Bash。
#输出长度为9个*,4行的矩形:这是一个注释,用于描述脚本的功能。
for ((a=1; a<=4; a++)):这是一个for循环,用于控制矩形的行数。变量a从1开始递增,直到4。
do:表示for循环的开始。
for ((b=1; b<=9; b++)):这是一个嵌套的for循环,用于控制每行输出的 * 的数量。变量b从1开始递增,直到9。
do:表示内层for循环的开始。
echo -n '*':使用echo命令输出一个星号(*),并且不换行(-n选项)。
done:表示内层for循环的结束。
echo '':使用echo命令输出一个空字符串,用于换行。
done:表示外层for循环的结束。