第五节课

一个完整脚本的组成:
脚本声明:#!/bin/bash
脚本注释:#ghvhjggj
脚本命令:ls pwd

[root@Redhat ~]# vim haha.sh
#!/bin/bash
#jiaobenshili
pwd
ls -l
[root@Redhat ~]# bash haha.sh
/root
total 16
-rw-------. 1 root root 1034 Feb 16 07:47 anaconda-ks.cfg
drwxr-xr-x. 2 root root   40 Feb 21 19:52 Desktop
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Documents
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Downloads
-rw-r--r--. 1 root root   37 Feb 23 17:25 haha.sh
-rw-r--r--. 1 root root 1085 Feb 15 23:51 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Music
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Pictures
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Public
-rw-r--r--. 1 root root   50 Feb 21 19:53 stderr.txt
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Templates
drwxr-xr-x. 2 root root    6 Feb 16 18:25 Videos

[root@Redhat ~]# vim haha.sh
#!/bin/bash
#jiaobenshili
echo "$0"
echo "$#,$*"
echo "$1,$3,$5"

echo “ 0 " 输 出 这 个 脚 本 的 名 字 e c h o " 0" 输出这个脚本的名字 echo " 0"echo"#,$*” 总共接收了几个参数,这些参数都是什么
echo “$1,$3, 5 , 5, 5?” 你接收到的第1,3,5个参数是什么,上一条命令的返回值

[root@Redhat ~]# bash haha.sh a b c d e f  a-f就是参数
haha.sh
6,a b c d e f
a,c,e
[root@Redhat ~]# bash haha.sh
haha.sh
0,
,,

[root@Redhat ~]# ./haha.sh  这是第二种执行脚本的方式,输入完整路径,可能权限不够
-bash: ./haha.sh: Permission denied
[root@Redhat ~]# chmod u+x haha.sh 
[root@Redhat ~]# ./haha.sh
./haha.sh
0,
,,

操作符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
返回值为0,则为存在,非0就是不存在

[root@Redhat ~]# [ -f /etc/fstab ]  判断这个文件是否存在,是不是
[root@Redhat ~]# echo $?  
0
[root@Redhat ~]# [ -f /etc/abcd ]
[root@Redhat ~]# echo $?
1

&&逻辑与,前面成立了才执行后面的
[root@Redhat ~]# [ -d /etc/ ] && echo "ok"
ok
[root@Redhat ~]# [ -d /abc ] && echo "ok"
[root@Redhat ~]#   //不存在就啥也没有

||逻辑或  若前面失败,则执行后面
[root@Redhat ~]# echo $USER  //输出当前用户的名称
root
[root@Redhat ~]# [ $USER = root ] && echo "Admin" || echo "User"
Admin
[root@Redhat ~]# su admin
[admin@Redhat root]$ [ $USER = root ] && echo "Admin" || echo "User"
User

!逻辑非
[root@Redhat ~]# [ ! $USER = root ]  && echo "User"
[root@Redhat ~]# su admin
[admin@Redhat root]$ [ ! $USER = root ] && echo "User"
User

操作符 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于

[root@Redhat ~]# echo $?
0
[root@Redhat ~]# [ 5 -gt 5 ]
[root@Redhat ~]# echo $?
1

[root@Redhat ~]# free -m  //查看内存情况,以M为单位
             total       used       free     shared    buffers     cached
Mem:          1987        841       1146          9          0        248
-/+ buffers/cache:        592       1395
Swap:         2047          0       2047
[root@Redhat ~]# free -m | grep Mem:  //提取Mem这一行
Mem:          1987        842       1145          9          0        248
[root@Redhat ~]# free -m | grep Mem: | awk '{print $4}'   //再提取第四列,查看当前可用的内存的值
1145
[root@Redhat ~]# [ `free -m | grep Mem: | awk '{print $4}'` -lt 1024 ] && echo "buzu" || echo "chongzu"
chongzu  //有反引号,作用是执行其中的命令,并取得结果的值

-z 是否为空值

[root@Redhat ~]# [ -z $HAHA ]
[root@Redhat ~]# echo $?
0

if语句:
单分支

[root@Redhat ~]# vim haha.sh
if [ ! -e /media/haha ]
then
mkdir /media/haha
fi
[root@Redhat ~]# ll /media
total 0
[root@Redhat ~]# bash haha.sh 
[root@Redhat ~]# ll /media/
total 0
drwxr-xr-x. 2 root root 6 Feb 25 20:34 haha

双分支

[root@Redhat ~]# vim haha.sh
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null    //ping三次,每次间隔0.2秒,最长响应时间3秒,最后输入到Linux回收站
if [ $? -eq 0 ]
then
echo "Host $1 is on-line"
else
echo "Host $1 is off-line"
fi
root@Redhat ~]# chmod u+x haha.sh
[root@Redhat ~]# ./haha.sh 192.168.43.94
Host 192.168.43.94 is off-line
[root@Redhat ~]# ./haha.sh 10.1.1.150
Host 10.1.1.150 is on-line

多分支

[root@Redhat ~]# vim haha.sh 
 read -p "Enter: " GRADE  //读取用户输入的参数,赋值给变量GRADE,-p给用户一个提醒
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
echo "Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
echo "Pass"
else
echo "Fail"
fi
[root@Redhat ~]# ./haha.sh 
Enter: 88
Excellent
[root@Redhat ~]# ./haha.sh 
Enter: 77
Pass
[root@Redhat ~]# ./haha.sh 
Enter: 69
Fail
[root@Redhat ~]# ./haha.sh 
Enter: 1001
Fail
[root@Redhat ~]# vim user.txt
zhangsan
lisi
wangwu   
zhaoliu

[root@Redhat ~]# vim haha.sh 
read -p "Enter: " PASSWD
for UNAME in `cat user.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "Already exist"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
fi
done
[root@Redhat ~]# ./haha.sh   //本来都没有,运行完就都有了
Enter: xxxx  //为这几个用户设置的密码
[root@Redhat ~]# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan)
[root@Redhat ~]# id lisi
uid=1002(lisi) gid=1002(lisi) groups=1002(lisi)
[root@Redhat ~]# id wangwu
uid=1003(wangwu) gid=1003(wangwu) groups=1003(wangwu)
[root@Redhat ~]# id zhaoliu
uid=1004(zhaoliu) gid=1004(zhaoliu) groups=1004(zhaoliu)
[root@Redhat ~]# vim ip.txt
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
[root@Redhat ~]# vim haha.sh 
for IP in `cat ip.txt`
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
[root@Redhat ~]# ./haha.sh 
10.1.1.1 is off-line
10.1.1.2 is off-line
10.1.1.3 is off-line
10.1.1.4 is off-line
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值