c语言sscanf函数的用法是什么
313
2022-11-05
Shell语句之循环
循环语句
echo 命令
格式:
echo -e "adfa\n123"
echo -n 表示不换行输出echo -e 输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下:
选项 | 作用 |
---|---|
\n | 输出换行 |
\r | 光标移至行首,并且不换行 |
\s | 当前shell的名称,如bash |
\t | 插入Tab键 |
\f | 换行,但光标仍停留在原处 |
\ \ | 表示插入"\\"本身 |
\b | 表示退格 不显示钱一个字符 |
\c | 抑制更多的输出或不换行 |
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符:"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于echo -n;但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。\n 换行,被输出的字符从"\n"处开始另起一行。\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;\v与\f相同;\t 转以后表示插入tab,即横向制表符;
\r 光标移至行首,但不换行,相当于使用"\r "以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖\\表示插入"\"本身;
for 循环
执行机制:遍历
执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环 结束 如果省略 [in WORDS ... ] ,此时使用位置参数变量 in "$@"
1、模拟,验证三次passwd不正确,passwd正确才能进入系统
#!/bin/bash a="123456" for i in {1..3} do read -p "请输入passwd:" b if [ "$a" = "$b" ] then echo "passwd正确,并进入系统" exit fi echo "passwd不正确!错误次数 $i" done
2、编写能够自动生成一个8位随机passwd的脚本
#!/bin/bash str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' len=${#str} for ((i=1; i<=8; i++)) do num=$[$RANDOM % $len] tmp=${str:num:1} passwd+=$tmp done echo "随机passwd为:$passwd"
3、将一个 0 到255 之间的十进制数转换成二进制数
#!/bin/bash read -p "请输入一个0-255之间的整数:" num1 if [ $num1 -ge 0 -a $num1 -le 255 ] then num=$num1 for a in {1..8} do str=$[ $num % 2 ]$str num=$[$num / 2] done echo "十进制 $num1 转换为二进制的结果是:$str" elif [ $num1 -lt 0 -o $num1 -gt 255 ] then echo "输入有误,请重新输入0-255之间的整数!" else echo "输入的不是整数,请重新输入!" fi
while 和 until
相对于for,需要知道循环次数
我们只知道停止条件,不知道次数,就需要使用while
直到达到条件
while 当命令判断为假时停止 until 当命令判断为真时停止
双重循环及跳出循环
break跳出单个循环后面加数字2则代表跳出两层循环
continue终止某次循环中的命令,但是不会完全终止命令
1、用while循环,输入一个随机数,然后求1到这个数的和
#!/bin/bash read -p "请输入一个小于100的整数:" num sum=0 i=1 while [[ "$num" -gt 0 && "$num" -le 100 && "$i" -le "$num" ]] do sum=$((sum + i)) let i++ done echo $sum echo $i
2、用until循环,写一个随机输入整数的求和
#!/bin/bash sum=0 i=1 read -p "请输入一个整数" num until [ "$i" -gt "$num" ] do sum=$[$sum + $i] let i++ done echo $sum
双重循环的使用
3、写个逛宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店(最多100家店),如果不再继续逛的话进行购物车结算总额。
#!/bin/bash yifu=500 kuzi=400 xiezi=350 maozi=150 waizi=50 i=1 sum=0 j=1 while [ $i -ge 1 ] && [ $i -le 5 ] do echo "现在是第 $i 家店铺!" while [ $j -ge 1 ] && [ $j -le 5 ] do read -p "请输入需要购买的商品编号(1-5): " num if [ $num -eq 1 ] then let sum=$[sum + yifu] elif [ $num -eq 2 ] then let sum=$[sum + kuzi] elif [ $num -eq 3 ] then let sum=$[sum + xiezi] elif [ $num -eq 4 ] then let sum=$[sum + maozi] elif [ $num -eq 5 ] then let sum=$[sum + waizi] else break fi echo "购买的商品总额为:$sum" let j++ done echo "是否需要逛下一家店铺!" let i++ done
4、输出菱形,并实现可通过输入数值的大小来伸缩菱形的大小
#!/bin/bash read -p "请输入菱形的大小:" num for ((a=1; a<=$num; a++)) do for ((c=$[num + 1]; c>=a; c--)) do echo -n " " done for ((b=1; b<=$[($a*2)-1]; b++)) do echo -n "*" done echo "" done for ((a=1; a<=$[num + 1]; a++)) do for ((b=1; b<=a; b++)) do echo -n " " done for ((c=$[num + 1]; c>=a; c--)) do echo -n "*" done for ((e=$num; e>=a; e--)) do echo -n "*" done echo "" done
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~