2019.8.20——shell脚本2

技术分享:
病毒:


$?返回值0 1 2

例如:
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# echo $?
0				//能够找到
[root@localhost ~]# grep ROOT /etc/passwd
[root@localhost ~]# echo $?
1				//找不到文件里的东西。但可以找到文件
[root@localhost ~]# grep ROOT /etc/passssss
grep: /etc/passssss: No such file or directory
[root@localhost ~]# echo $?
2				//找不到这个文件(目录)
[root@localhost ~]# 

shell的条件测试
三种格式:
格式1: test 条件表达式
格式2: [ 条件表达式 ]
格式3: [[ 条件表达式 ]]

test测试/下有没有home 这个目录
[root@localhost ~]# test -d /home/
[root@localhost ~]# echo $?
0

【】测试/下有没有home 这个目录
[root@localhost ~]# [ -d /home/ ]
[root@localhost ~]# echo $?
0

【】测试/下有没有ccc这个目录并创建
[root@localhost tmp]# [ ! -d /ccc ] && mkdir /tmp/ccc
//如果/下没有ccc目录,那么就在tmp下创建ccc


区别
[root@localhost ~]# [ -d /home/ ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ ! -d /home/ ]
[root@localhost ~]# echo $?
1
**********************

[root@localhost tmp]# [ -f anaconda-ks.cfg ]; echo $?
1
[root@localhost tmp]# touch  anaconda-ks.cfg 
[root@localhost tmp]# [ -f anaconda-ks.cfg ]; echo $?
0
[root@localhost tmp]# [ -f anaconda-ks.cfg ] && echo $?   
0					   // &&相当于;
[root@localhost tmp]# 

[root@localhost tmp]# [ ! -d /anaconda-ks.cfg  ] && touch /tmp/anaconda-ks.cfg 
*****************************

[root@localhost tmp]# [ "$USER" = "root" ];echo $?
0
[root@localhost tmp]#  [ "$USER" != "alice" ];echo $?
0
*****************************

#!/usr/bin/bash
back_dir=/var/mysql_back
if ! test -d $back_dir;then
        mkdir -p $back_dir
fi

echo "开始备份....."

[root@localhost tmp]# vi 1.sh
[root@localhost tmp]# sh 1.sh 
开始备份.....
[root@localhost tmp]# ls /var/
adm    crash  empty  gopher    lib    lock  mail        nis  preserve  spool  www
cache  db     games  kerberos  local  log   mysql_back  opt  run       tmp    yp
                   
***************************
#!/usr/bin/bash
if [ $UID -ne 0 ];then             
        echo "你没有权限..."
        exit
fi

yum -y install httpd

//-eq 等于  -ne 不等于 -lt小于 -gt大于 -le小于等于 -ge大于等于


#!/usr/bin/bash
if [ $USER != "root" ];then
        echo "你没有权限..."
        exit
fi

yum -y install httpd

**********************

#!/usr/bin/bash
if [ -f /tmp/test.txt ];then
        echo "文件存在,显示文件信息..."
        sleep 1			//停顿(延迟)1秒
        ls -l /tmp/test.txt
else
        echo "文件不存在,开始创建文件!!!"
        sleep 1
        touch /tmp/test.txt
        echo "创建成功!"
	ls -l /tmp/test.txt

fi

[root@localhost tmp]# sh 2.sh 
文件不存在,开始创建文件!!!
创建成功!
-rw-r--r--. 1 root root 0 Aug 18 03:34 /tmp/test.txt
[root@localhost tmp]# 

*******************************

#!/bin/bash
for i in {1..10}    //for循环
do
        echo "正在添加用户abc$i,稍等..."
        sleep 1
        useradd abc$i
        echo "用户abc$i添加成功!设置密码!稍等.."
        sleep 1
        echo 123 | passwd --stdin abc$i > /dev/null
        echo "用户abc$i密码设置成功,可以正常登陆!"
done

解释:passwd  --stdin abc$i是更改$i变量的密码,abc$i变量指代上面for循环的10个用户
加上--stdin是接受echo后面的字符串(123)做为密码,密码是123
[root@localhost tmp]# echo 123 | passwd --stdin abc
passwd: Unknown user name 'abc'.
[root@localhost tmp]# useradd abc
[root@localhost tmp]# echo 123 | passwd --stdin abc
Changing password for user abc.
passwd: all authentication tokens updated successfully.
[root@localhost tmp]#  passwd --stdin abc
Changing password for user abc.
123
passwd: all authentication tokens updated successfully.
[root@localhost tmp]# 



结果
[root@localhost tmp]# sh 2.sh 
正在添加用户abc1,稍等...
用户abc1添加成功!设置密码!稍等..
passwd: Only one user name may be specified.
用户abc1密码设置成功,可以正常登陆!
正在添加用户abc2,稍等...
用户abc2添加成功!设置密码!稍等..
passwd: Only one user name may be specified.
用户abc2密码设置成功,可以正常登陆!
正在添加用户abc3,稍等...
用户abc3添加成功!设置密码!稍等..
passwd: Only one user name may be specified.
用户abc3密码设置成功,可以正常登陆!
正在添加用户abc4,稍等...
用户abc4添加成功!设置密码!稍等..
................

***************************
#!/usr/bin/bash
##this is test user exist or not
##by xx

read -p "PLS input a username: " user

#if id $user &> /dev/null;then
id $user &>/dev/null

if  [ $? -eq 0 ];then
        echo "user $user exits" 

else
        useradd $user
        if [ $? -eq 0 ];then
        echo "user $user is created"
        fi

fi
  
结果:
[root@localhost tmp]# sh 4.sh 
PLS input a username: add
user is created


下午

-a 与   -o  或   ! 非
[root@localhost ~]# [ 1 -lt 2 -a 5 -gt 10 ];echo $?
1
[root@localhost ~]# [ 1 -lt 2 -o 5 -gt 10 ];echo $?
0
#!/bin/bash
testuser=root
if 
        grep $testuser /etc/passwd &>/dev/null
then
        echo "ok this user is exits"
fi

结果:
[root@localhost ~]# sh 9.sh 
ok this user is exits

f
        grep hhh /etc/passwd;then
        echo account hhh exit
else
        echo account hhh not exit
fi

结果:
[root@localhost ~]# sh 10.sh 
hhh:x:1012:1012::/home/hhh:/bin/bash
account hhh exit
#!/bin/bash
echo "Please enter a score: "

read score

if [ -z "$score" ];then
        echo "You enter nothing.Please enter a score : "
        read score
else
        if [ "$score" -lt 0 -o "$score" -gt 100 ]; then
                echo "The score should be between 0 and 100.Please enter again:"
                read score
        else
                #如果成绩大于90
                if [ "$score" -ge 90 ]; then
                        echo "The grade is A."  
                #如果成绩大于80小于90 
                elif [ "$score" -ge 80 ];then
                        echo "The grade is B."
                 #如果成绩大于70小于80 
                elif [ "$score" -ge 70 ];then
                        echo "The grade is C."
                 #如果成绩大于60小于70 
                elif ["$score" -ge 60 ];then
                        echo "The grade is D."
                 #如果成绩小于60 
                else
                        echo "The grade is E."
                fi
        fi
fi


结果:

批量修改用户密码

先批量创建用户

#!/bin/bash
for i in {1..4}
do
        echo "正在添加用户abc$i,稍等..."
        sleep 1
        useradd abc$i
        echo "用户abc$i添加成功!设置密码!稍等.."
        sleep 1
        echo 123 | passwd --stdin abc$i &> /dev/null
        echo "用户abc$i密码设置成功,可以正常登陆!"
done

然后创建一个passwd.txt文件,用来修改密码
abc1:1
abc2:1
abc3:1
abc4:1


然后输入一条命令:
[root@localhost ~]# chpasswd < passwd.txt 
[root@localhost ~]# 
  
最后修改成功


作业;
请找出本教室可用IP地址。可用的写入到1.txt 不可用的写入到2.txt

#!/bin/bash
count=0
for i in {1..5}    //1是网关,255是掩码位

do
        ip=10.0.126.$i


        if  ping -c1 $ip >1.txt 2>2.txt;then
                echo "$ip可达"
                count=$(($count+1))
        else
                echo "$ip不可达"
        fi


done
echo "可用IP有$count 个"

结果;
[root@localhost ~]# sh 12.sh 
10.0.126.1可达
10.0.126.2可达
10.0.126.3不可达
10.0.126.4不可达
10.0.126.5不可达
可用IP有2 个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值