本文主要是介绍课时82:流程控制_循环控制_shift实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.4.4 shift实践
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
简介
shift是一个特殊的循环控制命令,它的特点主要是依次从输入信息列表中获取相关的参数数据值,然后走循环。
语法解读
continue语法格式:for 循环列表do...shiftdone注意:shift 从用户输入的信息中提取第一个位置的数据内容,每走一个循环,从下一个位置获取输入参数
简单实践
实践1-依次获取所有参数的内容
查看脚本效果
[root@localhost ~]# cat shift_get_args.sh
#!/bin/bash
#功能:shift依次从输入的参数列表中获取内容# 定制一套循环逻辑,直到参数位置内容为空
until [ -z "$1" ]
doecho "脚本的第1个位置参数内容是: $1, 当前脚本参数数量: $#"# 接收完第一个参数后,直接将起始值移至下一个位置shift
done
脚本执行效果
[root@localhost ~]# /bin/bash shift_get_args.sh aa bb cc dd ee
脚本的第1个位置参数内容是: aa, 当前脚本参数数量: 5
脚本的第1个位置参数内容是: bb, 当前脚本参数数量: 4
脚本的第1个位置参数内容是: cc, 当前脚本参数数量: 3
脚本的第1个位置参数内容是: dd, 当前脚本参数数量: 2
脚本的第1个位置参数内容是: ee, 当前脚本参数数量: 1
结果显示:每次从脚本的第一个位置获取的内容在逐渐变化中。
实践2-创建指定的系统用户
查看脚本效果
[root@localhost ~]# cat shift_add_user.sh
#!/bin/bash
# 功能:shift批量创建指定的用户
# 提示:
# /dev/random和/dev/urandom设备文件会生成随机数,第一个依赖系统中断# 定制普通变量
user_file='/tmp/user.txt'# 保证文件可用
[ -f ${user_file} ] && > ${user_file}# 定制批量创建用户的业务逻辑
if [ $# -ne 0 ]
then# 注意: 这里用的是 -n,后面的$1两侧要有"",如果用until语句的话使用 -z表达式while [ -n "$1" ]do# 创建用户useradd $1# 生成密码password=$(head /dev/urandom | tr -dc '[:alnum:]' | head -c 8)# 为用户添加密码echo ${password} | passwd --stdin $1 > /dev/null 2>&1# 信息输出echo "用户: $1, 密码: ${password}" >> ${user_file}echo -e "\e[31m用户 $1 创建成功\e[0m"# 移动输入参数shiftdone
elseecho -e "\e[31mUsage: /bin/bash $0 arg_list\e[0m"
fi
查看脚本执行效果
[root@localhost ~]# /bin/bash shift_add_user.sh
Usage: /bin/bash shift_add_user.sh arg_list
[root@localhost ~]# /bin/bash shift_add_user.sh zhangsan lisi wangwu zhaoliu
用户 zhangsan 创建成功
用户 lisi 创建成功
用户 wangwu 创建成功
用户 zhaoliu 创建成功
[root@localhost ~]# cat /tmp/user.txt
用户: zhangsan, 密码: 4m4njspn
用户: lisi, 密码: sFEFcecC
用户: wangwu, 密码: rsDmtkcQ
用户: zhaoliu, 密码: Ehsj2fZo
小结
这篇关于课时82:流程控制_循环控制_shift实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!