echo -n 表示不换行输出
echo -e 表示输出转义符
常用的转义符
选项 | 作用 |
---|---|
\r | 光标移至行首,并且不换行 |
\s | 当前shell的名称,如bash |
\t | 插入Tab键,制表符 |
\n | 输出换行 |
\f | 换行,但光标仍停留在原处 |
\ | 表示插入"\"本身转义 |
\b | 表示退格 不显示前一个字符 |
\c | 抑制更多的输出或不换行 |
echo 写脚本的时候 对齐 不换行
[root@localhost ky15]#echo -e "12345\b678"
##退格删除前面的字符
1234678
[root@localhost ky15]#echo -e "12345\b\b678"
123678
[root@localhost ky15]#echo -e "12345\b\b\b678"
12678
[root@localhost ky15]#echo -e "12345\b\b\b\b678"
16785
###注意退格键和末尾的字符相关,超过末尾的字符数量 会出bug 了解即可[root@localhost ky15]#echo -e "12345678\c"
12345678[root@localhost ky15]#echo -e "1234\c5678"
1234[root@localhost ky15]#
###\c 注意 使用在数字中间会把后面内容删除echo -e "n\n\n\n\n\nw"|fdisk /dev/sdb
#自动硬盘分区#!/bin/bash
read -p "请输入你要分区的设备:" disk
read -p "请输入你要分区的大小:" numecho -e "n\n\n\n\n${num}\nw\n " | fdisk ${disk}
[root@localhost data]#rm -rf 123
#是把软连接删除
[root@localhost data]#rm -rr 123/
#把软连接里的文件全删除
###删除前面的字符,如果退格数大于前面的字符,就会有bug
###制表符,tab退格
###删除后面的字符,并删除了换行符
###换行
###协助bash做多次运算
date查看当前系统时间
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
% T 时间(24小时制)(hh:mm:ss)
循环含义
将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件
重复运行次数
循环次数事先已知
循环次数事先未知
常见的循环的命令:for, while, until
1.用户名存放在name.txt文件中,每行一个
2.初始密码均为123123
3.验证脚本
1.根据IP地址检查主机状态
2.IP地址存放在ipadds.txt文件中,每行一个
3.使用ping命令检测主机的连通性
结果:
结果:
结果:
相对于for,需要知道循环次数
我们只知道停止条件,不知道次数,就需要使用while
直到达到条件
while循环 1、语法结构 2、死循环
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循
1.通过变量RANDOM货的随机数
2.提示用户猜测,并记录次数,猜中后退出循环
1.用户名称以stu开头,按数字顺序进行编号
2.一共添加20个用户,即stu1、stu2.....
3.初始密码为123123
结果:
until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环
until 条件测试操作
do
命令序列
done
break:break n(默认为0),n为几,就跳出几层循环
continue:跳出本次循环,下次接着循环
exit:直接退出脚本
[root@localhost ~]#cat continue.sh
#结束某次循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue
fi
echo i=$i
done[root@localhost ~]#cat break.sh
#结束一层循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then break
fi
echo i=$i
done
[root@localhost ~]#cat continue.sh
#本层循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue 2
fi
echo i=$i
done
[root@localhost ~]#cat break.sh
#本层循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then break 2
fi
echo i=$i
done
多层跳出
#!/bin/bash
for i in {1..10}
do
for j in {1..10}
do
echo "j=$j"
done
echo ----------------
done[root@localhost ~]#cat break.sh
#!/bin/bash
for j in {1..9}
do
for i in {1..9}
do
if [ $i -eq 5 ]
then
break
fi
echo i=$i
done
done
#select 菜单选择
[root@localhost ~]#select menu in 配置网卡 配置yum源;do echo $menu;done
1) 配置网卡
2) 配置yum源
#? 1
配置网卡
#? 2
配置yum源
#?
[root@localhost ~]#PS3="请选择功能(1-2):";select menu in 配置网卡 配置yum源;do echo $menu;done
1) 配置网卡
2) 配置yum源
请选择功能(1-2):1
配置网卡
请选择功能(1-2):2
配置yum源
请选择功能(1-2):
. | 容易单个字符 |
[ ] | 单个字符 |
* | 前面字符出现 0 到 正无穷 |
+ | 到正无穷 |
\{3\} | 3次 |
{n} | n次 |
{n,} | 最少n次 |
{,n} | 最多n次 |
{n,m} | n到m次 |
^ | 开头 |
$ | 结尾 |
\b | 字符串开头 结尾 |
\ | 转义 |
.* | 1 到 正无穷 |
^$ | 空行 |