for,while,until语句

echo选项用法

echo -n表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符:

\b转义后相当于按退格键(backspace),但前提是\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c不换行输出,在"\c"后面不存在字符的情况下,作用相当于echo -n;
但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n换行,被输出的字符从"\n"处开始另起一行。

\f换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v与 \f相同;

\t转以后表示插入tab,即横向制表符;

\r
光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时
"\r"前面的字符不会被覆盖

\\表示插入"\"本身;


i=`echo "11,22,33,44"`

echo ${i%,*}
从最后倒数到最短的匹配部分% 后面的逗号的地方被删除(包含逗号)
11,22,33

echo ${i%%,*}
从最后倒数到最长的匹配部分用%%后面的逗号地方都被删除
11

echo ${i#*,}
22,33,44
从开头到最短的匹配部分用#后面的逗号地方被删除

echo ${i##*,}
44
从开头到最长的匹配部分用##后面的逗号的地方被删除

for语句结构

读取不同的变量值,用来逐个执行同一组命令

在这里插入图片描述


使用for 把123456 打印输出到屏幕上

在这里插入图片描述

还有一种方法,也可以把1-10打印到屏幕上

在这里插入图片描述

用seq也可以

在这里插入图片描述

用c语言的格式也可以

在这里插入图片描述


把 1- 100 的数字 哪些是偶数 哪些是基数,分别两列进行输出

代码如下

在这里插入图片描述


把1-100所有奇数合,偶数合,相加

在这里插入图片描述


批量添加用户

用户名存放在users.txt文件中,每行一个

如果用户存在,则输出已存在;如果用户不存在,则创建

初始密码均为设为123456

验证脚本

在这里插入图片描述

命令思路:1.先 定义 users 变量

​ 2.进行for循环,取值范围在 /root/users.txt

​ 3.输出 users 变量,在 name 变量中检索

​ 4.进if语句判断

​ 5.如果$? = 0 ,那么进行下一步判断;输出 name 已经存 在

​ 6.如果$? = 1 ,那么 创建这个用户

​ 7.并进行 密码输出 ,并将输出结果 输出到黑洞当中


例2:在 “qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM123456789” 中选取任意8位密码,且每次得到的结果都不一样

在这里插入图片描述


while语句结构

重复测试某个条件,只要条件成立则反复执行

在这里插入图片描述

列1: 批量添加用户

用户名称以stu开头,按数字顺序进行编号

一共添加20个用户

初始密码设为123456

在这里插入图片描述

例2:猜商品价格游戏

通过变量 RANDOM 获得随机数

提示用户猜测并记录次数,猜中后退出循环

在这里插入图片描述


until语句结构

重复测试某个条件,只要条件不成立则反复执行

在这里插入图片描述

例1:计算1-50的和

在这里插入图片描述

例2: 为指定用发送在线消息

若用户不在线(未登陆系统),则每10分钟试一次,直到用户登陆系统后再发送信息

用户名与消息通过位置参数传递给脚本

#!/bin/bash
#example: ./write.sh <USERNAME> [message]

username=$1
msg=$2

#用于判断执行脚本的格式是否携带了位置参数
if [ $# -lt 1 ];then
 echo "USAGE: $0 <USERNAME> [message]"
#!/bin/bash
#example: ./write.sh <USERNAME> [message]
username=$1
msg=$2

#用于判断执行脚本的格式是否携带了位置参数
if [ $# -lt 1 ];then
 echo "USAGE: $0 <USERNAME> [message]"
 exit 1
fi

#用于判断携带的用户名参数是否正确
grep "^${username}:" /etc/passwd > /dev/null
if [ $? -ne 0 ];then
 echo "$username 不是系统用户"
 exit
fi

#用户判断系统用户是否已登陆
who | grep "$username" > /dev/null

while [ $? -ne 0 ]
do
 echo "$username 没有登陆系统,请先登陆"
 sleep 3
done

if [ ! -z "$msg"];then
echo "执行命令:echo $msg | write $username"

else
msg="hello $username,this is default message"
echo "执行命令: echo $msg | write $username"
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值