循环语句,主要是为了简化重复动作代码,在运维方面主要用于重复某项动作,例如批量创建用户,在shell中主要有两种 while循环 与 for 循环。
目录
什么是shell
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至时编写一些程序。Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
一:shell循环语句
1.1:for循环
for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。
其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。
for #条件
do
#执行命令
done #结束
行1,讲串行中的字段迭代放入变量中
行2-4,接着将重复执行do和done之间的命令区域,直到串行中每一个字段军处理过为止。
#!/bin/bash
for ((a=10;a>0;a--))
do
echo -n " TIME $a"
echo -ne "\r " #不换行覆盖输出
sleep 1
done
1.2:echo用法
echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数: -n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
--help 显示帮助
--version 显示版本信息
范例 : [root@localhost ~]# echo "what is your name "
1.3:姓名列表批量创建账户
[root@server1 ~]# vi 1.txt
tom
jerry
wendy
[root@server1 ~]# vim 1.sh
#!/bin/bash
a=$(cat /root/1.txt)
for b in $a
do
useradd $b
echo "654321" | passwd --stdin $b
echo "创建{$b}完成"
done
[root@server1 ~]# sh 1.sh
更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建{
tom}完成
更改用户 jerry 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建{
jerry}完成
更改用户 wendy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
创建{
wendy}完成
语法2:
for ((初始化;;循环控制条件;变量变化))
do
程序
done
需要注意以下几点:
-
初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。</