SHELL脚本命令

脚本声明       #!/bin/bash

脚本注释       #巴拉巴拉的描述

脚本命令       ls pwd

 

 

echo "$0"  脚本名称

echo "$#,$*"   #接受了几个参数,*参数分别使声明

echo "$1,$3,$5"     分别接收到的第几个参数

 

haha.sh a b c d e f

6,a b c d e f

a,c,e

 

 

 

[ -love $GIRLFRIEND ]

echo $?   #返回上一条命令执行的结果

0 是

1 否

 

 

 

 

 

 

文件测试所用的参数

运算符

作用

-d

测试文件是否为目录类型

-e

测试文件是否存在

-f

判断是否为一般文件

-r

测试当前用户是否有权限读取

-w

测试当前用户是否有权限写入

-x

测试当前用户是否有权限执行

[ -d /etc/fstab ]    #判断是否为目录
echo $?                               #是的就返回结果0

 

&&  逻辑与,若前面成功,则执行后面

||      逻辑或    若前面失败,则执行后面

!      逻辑非

[ -e /dev/cdrom ] &&  echo "Exist"    #逻辑与,判断文件如果存在,就输出Exist

[ $USER = root ] || echo "user"           #逻辑或,判断是否为root用户,不是则输出user

[ ! $USER = root ] && echo "user" || echo "root"      #逻辑非,判断当前用户是否为root……

 

 

可用的整数比较运算符

运算符

作用

-eq

是否等于

-ne

是否不等于

-gt

是否大于

-lt

是否小于

-le

是否等于或小于

-ge

是否大于或等于

[ 10 -gt 10 ]   #判断10是否大于10,如果不是,$?返回1

 

#判断内存是否少于1024,如果是就输出不足

[ `free -m | grep Mem: | awk ‘{print $4}’` -lt 1024 ] && echo “不足” || echo “充足”

`反引号

 

 

if条件语句

#!/bin/bash

DIR="/share/cdrom"

if [ ! -e $DIR ]        #如果文件目录不存在,则创建该目录

then

mkdir -p $DIR

fi

 

 

#!/bin/bash

ping -c 3 -i 0.2 -W 3 $1 &> /dev/null

if [ $? -eq 0 ]         #判断主机是否在线

then

echo "the $1 host is On-line"

else

echo "the $1 host is off-line"

fi

 

#!/bin/bash

#判断分数状况

read -p "Enter your score (0-100):" GRADE

if [ $GRADE -le 100 ] && [ $GRADE -ge 85 ] ; then

echo "得分$GRADE是优秀"

elif [ $GRADE -le 84 ] && [ $GRADE -ge 75 ] ; then

echo "得分$GRADE是良好"

elif [ $GRADE -le 74 ] && [ $GRADE -ge 65 ] ; then

echo " 得分$GRADE是合格"

else

echo "不及格,或者分数有误"

fi

 

 

for条件循环语句

#!/bin/bash

read -p "Please input your password: " PASSWD

for UNAME in `cat users.txt`

do

id $UNAME &> /dev/null

if [ $? -eq 0 ] ; then

echo "用户已存在,请勿重复创建"

else

useradd $UNAME &> /dev/null

echo "$PASSWD" | passwd --stdin root

if [ $? -eq 0 ] ; then

echo "用户$UNAME创建成功"

else

echo "用户创建失败"

fi

fi

done

 

 

#!/bin/bash

#判断主机列表内的主机是否在线

HLIST=$(cat ~/hostlist.txt)

for IP in $HLIST

do

ping -c 3 -i 0.2 -W 3 $IP &> /dev/null

if [ $? -eq 0 ] ; then

echo "$IP is on-line"

else

echo "$IP is off-line"

fi

done

 

 

#!/bin/bash

PRICE=$(expr $RANDOM % 1000)

TIMES=0

echo "请输入0-999之间的数"

while true

do

read -p "请输入您的数字:" INT

let TIMES++

if [ $INT -eq $PRICE ] ; then

echo "恭喜你答对了,数字是$PRICE"

echo "你总共答了$TIMES次"

exit 0

elif [ $INT -gt $PRICE ] ; then

echo "太高了"

else

echo "太低了"

fi

done

 

 

 

判断字符

#!/bin/bash

read -p "请输入一个字符,并且按Enter键:" KEY

case "$KEY" in

[a-z][A-Z])

echo "你输入的是字母。"

;;

[0-9])

echo "你输入的是数字。"

;;

*)

echo "你输入的是符号、空格、或其他"

esac

 

 

 

 

计划任务服务程序

at

[root@linuxprobe ~]# at 23:30
at > systemctl restart httpd
at > 此处请同时按下 Ctrl + D 组合键来结束编写计划任务

 

[root@linuxprobe ~]# echo "systemctl restart httpd" | at 23:30

 

at -l        #显示一次性计划任务

 

 

crond

使用 crond 设置任务的参数字段说明

字段

说明

取值为 059 的整数

取值为 023 的任意整数

取值为 131 的任意整数

取值为 112 的任意整数

星期

取值为 07 的任意整数,其中 0 7 均为星期日

命令

要执行的命令或程序脚本


 

[root@localhost ~]# crontab -e         #创建计划任务

[root@localhost ~]# crontab -l          #显示计划任务列表

25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

0 1 * * 1,2,3,4,5 /usr/bin/rm -rf /tmp/*

 

在 crond 服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用 whereis 命令进行查询

 

30 * * * * /usr/sbin/reboot   #每30分钟执行一次命令

30 3 * * * /usr/sbin/reboot   #每天凌晨3点30分钟执行命令

30 3 5 * * /usr/sbin/reboot  #每个月的5日的凌晨3:30分执行命令

30 3 5 9 * /usr/sbin/reboot  #每年9月5日的凌晨3:30分执行命令

30 3 * 9 2 /usr/sbin/reboot  #每年9月的星期二凌晨3:30分执行命令

30 3 * * 2 /usr/sbin/reboot  #每个礼拜二执行命令

30 */2 * * *     /usr/sbin/reboot   #每隔2小时执行命令

30 2 3-5 * *   /usr/sbin/reboot   #每月的3号到5号凌晨2:30分执行命令

30 2 3,5,7 * *  /usr/sbin/reboot   #每月的3,5,7号凌晨2:30分执行命令

30 * * */2 *     /usr/sbin/reboot   #每隔2个月执行命令

10,30 * * * * /usr/sbin/reboot      #每小时的10,30分执行命令

 

 

#!/bin/bash

#创建user1-20用户,并且密码随机

for i in {121..130}

do

useradd user$i

PASSWORD=`openssl rand -base64 5`

echo "$PASSWORD" | passwd --stdin user$i &> /dev/null

echo "创建的用户为 user$i ,密码为$PASSWORD"

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值