一.echo 命令
echo -n 表示不换行输出
echo -e 表示输出转义符
常用的转义符
\t | 插入Tab键,制表符 |
\n | 输出换行 |
\c | 抑制更多的输出或不换行 |
\r | 光标移至行首,并且不换行 |
\f | 换行,但光标仍停留在原处 |
\b | 表示退格 不显示前一个字符 |
\ | 表示插入"\"本身转义 |
\s | 当前shell的名称,如bash |
转义符的使用:
\t
\b
\c
\n
\r
标准输出的一些小用法
显示奇数:
显示偶数:
删除字符:
截取字符:
增加字符串:
eval 命令 协助bash做多次运算
二.date 命令
date 查看当前系统时间
-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F 完整日期格式,等价于 %Y-%m-%d
%T 时间(24小时制)(hh:mm:ss)
查看日历
用法:
cal [选项] [[[日] 月] 年]
三. for循环
-
用法:
-
读取不同的变量值,用来逐个执行同一组命令
-
for循环经常使用在已经知道要进行多少次循环的场景
-
-
格式:
for 变量名 in 取值列表
do
命令序列
done
里面的 i 可以调用也可以不调用
操作:
① 打印 1-10
② 给文件批量改后缀
③ 给文件批量改名
模拟环境:
通过脚本可以批量改变格式
修改后的文件格式
#!/bin/bash
for i in `ls /data02`
do
a=`echo $i |cut -d"_" -f1`
b=`echo $i |cut -d"_" -f2`
mv /data02/$i /data02/${b}_${a}.jpg
done
④ 求1-100的和
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[i+sum]
done
echo "求和结果为$sum"
⑤ 求奇数和和偶数和
#!/bin/bash
sum1=0
for i in {1..100..2}
do
sum1=$[i+sum1]
done
echo "奇数和为$sum1"
sum2=0
for i in {0..100..2}
do
let sum2+=$i
done
echo "偶数和为$sum2"
⑥ 批量添加用户
因为刚才已经创建了 name.txt 里面的用户,所以无法再次创建
#!/bin/bash
for i in `cat /data02/name.txt`
do
id $i &>> /dev/null
if [ $? -eq 0 ]
then
echo "${i}用户已存在"
else
useradd $i
echo 123 |passwd --stdin $i &>> /dev/null
fi
done
⑦ ping
#!/bin/bash
{
for i in {1..254}
do
ping -c2 -W2 192.168.44.$i &>>/dev/null
if [ $? -eq 0 ]
then
echo "$i is online" >> /data02/on.txt
else
echo "$i is offline" >> /data02/off.txt
fi
done
}&
⑧ 打印九九乘法表
#!/bin/bash
for ((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
echo -e "${i}x${j}=$[i*j] \t\c"
done
echo
done
⑨ 倒过来打印
#!/bin/bash
for j in {9..1..1}
do
for i in `seq $j`
do
echo -e "${i}x${j}=$[i*j] \t\c"
done
echo
done
四. while 循环语句
-
用法:
- 重复测试某个条件,只要条件成立则反复执行
- 常在不知道范围的时候成立
- 格式
while 条件测试操作
do
命令序列
done
死循环:
while 写一个永远为真的条件
while true
while :
操作:
① 累加求和
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
sum=$[i+sum]
let i++
done
echo "求得和为$sum"
② 批量建用户
③ 批量删除用户
#!/bin/bash
x=1
while [ $x -le 20 ]
do
userdel -r stu$x
let x++
done
④ 猜商品的价格
#!/bin/bash
p=`echo $[RANDOM%1000+1]`
time=0
while :
do
read -p "请输入商品的价格(1-1000):" h
let time++
if [ $p -eq $h ]
then
echo "恭喜您猜中了,商品的价格是${h};您一共猜了${time}次"
exit
elif [ $p -gt $h -a $h -le 1000 -a $h -gt 0 ]
then
echo "您猜的价格过低"
elif [ $p -lt $h -a $h -le 1000 ]
then
echo "您猜的价格过高"
else
echo "输入有误,请重新输入"
fi
done
五.until 循环语句
-
用法: 重复测试某个条件,只要条件不成立则反复执行
-
格式:
until 条件测试操作
do
命令序列
done
操作
① 求1-100的和
#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
do
sum=$[sum+i]
let i++
done
echo "{1..100}的和:" $sum
② 登录用户 xyl 使用 root 发消息给 xyl
root 发送
xyl 能收到
#!/bin/bash
#输出参数是否满足条件
if [ $# -lt 2 ]
then
echo "位置参数不足,需要在脚本后面添加用户名和发送的信息"
exit 1
fi
#判断用户是否存在
if grep -q "^$1" /etc/passwd
then
:
else
echo "用户存在"
exit 1
fi
#判断用户是否在线
until who |grep $1 &>>/dev/null
do
echo "用户不在线"
sleep 5
done
echo $2 |write xyl
六.continue 和 break 和 exit
-
break跳出单个循环 break n 数字数字是几代表跳出n层循环
-
continue终止某次循环中的命令,但是不会完全终止命令
-
exit 直接退出脚本