echo -n 表示不换行输出
echo -e 表示输出转义符
date查看当前系统时间
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
% T 时间(24小时制)(hh:mm:ss)
[root@localhost ~]# date -d '-1 day' +%F
2021-10-21
[root@localhost ~]# date +%F
2021-08-19
[root@localhost ~]# date -d '1 day ' +%F-%T
2021-08-20-23:28:42
[root@localhost mnt]# date -d "-3 day" 前三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost mnt]# date -d "+3 day" 后三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost data]#date -d '1 day ' +%F' '%T
2021-10-22 00:45:37
[root@localhost data]#cal 2021
#查看日历
[root@localhost data]#cal 9 1752
[root@test1 ~]# echo $[$RANDOM%50]
37
[root@test1 ~]# echo $[$RANDOM%20]
15
[root@localhost data]#seq 1 2 10 #从1 开始 步长为2 到10 为止
1
3
5
7
9
[root@localhost data]#seq 9 -1 1
9
8
7
6
5
4
3
2
1
for 变量名 in {list}
do
command
done
不带列表循环
for 变量名
do
command
done
相对于for,需要知道循环次数
我们只知道停止条件,不知道次数,就需要使用while,直到达到条件
while循环 :1、语法结构 2、死循环
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
break跳出单个循环 break n 数字数字是几代表跳出n层循环
continue终止某次循环中的命令,但是不会完全终止命令
exit 直接退出脚本
until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环
until 循环语句的语法结构如下所示
until 条件测试操作
do
命令序列
done
#!/bin/bash
# j行数 i管列数
for j in {1..9}
do
for i in `seq $j`
do
echo -e "${i}x${j}=$[i*j] \c"
done
echo
done
另一种
#!/bin/bash
for j in {1..9}
do
for i in `seq $j`
do
echo -ne "$j*$i=$[ $j*$i ]\t"
done
echo
done
#!/bin/bash
for i in {1..254}
do
{
ping -c2 -W2 192.168.11.$i &>/dev/null && echo "$i is online" >> data/hostonline.txt || echo "$i is offline" >> data/hostoffline.txt
} &
done
另一个
[root@localhost ~]# cat mcb8.sh
#!/bin/bash
read -p "请输入你需要测试的网段,格式为(192.168.11.):" ip
for i in {1..254}
do
{
ping -c2 -W2 $ip$i &>/dev/null
if [ $? -eq 0 ]
then
echo "$ip$i is online"
echo $ip$i >> host.txt
else
echo "$ip$i is offline"
fi
}&
done
wait
[root@localhost data]# echo -e "\E[1;$[RANDOM%7+31]m 称霸武林 \E[0"
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[sum+i]
done
echo $sum
[root@localhost data]# cd /
[root@localhost /]# mkdir data
[root@localhost /]# bash mcb13.sh
bash: mcb13.sh: 没有那个文件或目录
[root@localhost /]# cd
[root@localhost ~]# cd data/
[root@localhost data]# mv mcb13.sh /data
[root@localhost data]# cd /data/
[root@localhost data]# ls
mcb13.sh
[root@localhost data]#
[root@localhost data]# ls
mcb13.sh
***************************
[root@localhost ~]# cd data/
[root@localhost data]# mv mcb13.sh /data
[root@localhost data]# cd /data/
[root@localhost data]# ls
mcb13.sh
**********************************
[root@localhost data]# cat mcb13.sh
#!/bin/bash
for i in `cat /data/name.txt`
do
id $i
if [ $? -eq 0 ];then
echo "用户已存在"
else
useradd $i[root@localhost data]# cat name.txt
马传斌
马传斌2
马传斌3
ABCD
EFGihf
**************************
echo 123 | passwd --stdin $i
fi
done
***********************
[root@localhost data]# bash mcb13.sh
id: 马传斌: no such user
useradd:无效的用户名“马传斌”
passwd:未知的用户名 马传斌。
id: 马传斌2: no such user
useradd:无效的用户名“马传斌2”
passwd:未知的用户名 马传斌2。
id: 马传斌3: no such user
useradd:无效的用户名“马传斌3”
passwd:未知的用户名 马传斌3。
id: ABCD: no such user
更改用户 ABCD 的密码 。
passwd:所有的身份验证令牌已经成功更新。
id: EFGihf: no such user
更改用户 EFGihf 的密码 。
passwd:所有的身份验证令牌已经成功更新。