3.Shell字符串对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.Shell字符串对比相关的知识,希望对你有一定的参考价值。

参考技术A 1.字符串比对,字符串必须使用双引号

2.判断传参的参数是否为整数

例如:sh count.sh 10 10 要求判读是否传入两个参数 要求数字加判读是否为整数(禁止if)

​ 10=10

3.案例:批量创建用户 批量创建10个用户 oldboy1 oldboy2 oldboy3...oldboy10

要求密码统一设置为123456

1.输入用户的前缀oldboy,判断如果为空 则退出

2.输入需要创建用户的个数 10,判断是否为整数

4.案例:判断当前10.0.0.0/24网络中 有哪些IP地址在线 ping通则在线

1.单分支

2.多分支

3.案例:输入两个数字 是否为整数 使用if方式

4.案例:根据操作系统不同的版本安装不同的源

1.如何取出版本号

2.如何做版本号的比对

3.比对完成执行相对应的安装源

5.案例:猜数字

生成一个随机数 1-100之间

RANDOM 随机数的范围 0-32767

取余

echo $((RANDOM%100+1))

用户输入一个数字

判断用户输入的数字如果相等则退出提示猜对了 大了 提示比随机数大 小了 提示 比随机数小

shell - 流程控制if

流程控制if 字符比较

1. [ "$a" == "$b"]
2. != 不等于
3. -z 字符串长度为零为真
4. -n 字符串长度不为空则为真 [ -n "$a" ]
5. str1>str2
# 多条件对比
a : and 
o : or
[ 1 -lt 2 -a 5 -lt 10];echo $?
# 正则对比会使用 [[]]
&& 且
|| 或
[[ 1 -lt 5 || 5 -gt 10 ]];echo $?

例: 判断学生优劣
1-59 补考
60-80 及格
80-100 优秀
read -p "输入分数" grade
if [ $grade -lt 60 ];then
    pass 
elif [ $grade -ge 80 ];then
    pass
elif [ $grade -ge 60 ];then
    pass
else 
    pass

if [ $grade -gt 0 a $grade -lt 60];then
    pass
# 正则匹配
 [[ "$USER" =~ ^r ]]
 判断变量是不是全都是数字 
[[ "$num"=~ ^[0-9]+$ ]]

例: 批量创建用户, 输入创建用户的前缀以及后缀 aaa 123

read -p "前缀:" qz
read -p "后缀" hz
if [[ ! $qz=~^[a-z]+$ ]];then
if [[ #hz =~ ^[0-9]+$ ]];then
    user = $qz$hz
    id $user &>/dev/null
    if [ $? -eq 0];then
        echo "已存在"    

例 : root 用户清空/var/log/message 日志,并每次执行保留最近100行

# 切换用户 su - octivia123
# $0 可以取到脚本的名字
#!/usr/bin/bash

# 判断root
if [ $USER == "root" ] && [ $UID -eq 0 ] ;then
        # 文件必须存在
        if [ -f /var/log/messages ];then
                # 保留最近100行
                tail -100 /var/log/messages > /var/log/messages/bak
                cat /var/log/messages.bak > /var/log/messages
        else
                echo "file do not exist"
else
        echo "do not have the right to execute file $0 "
fi

判断httpd服务是否正常启动,文件名必须是httpd_daemon.sh

# 手动判断服务是否正常
ps aux  netstat -lntp  lsof  systemctl  telnet  namp  
# ps aux|grep httpd|grep -v grep
#!/usr/bin/bash

# 判断服务是否正常启动
ssh_status=$(systemctl status sshd|awk '/^.*Active/ print $2')
ssh_status=$(systemctl status sshd|awk '/^.*Active/ print $2')
if [ "$ssh_status" == "active" ];then

        echo "is active"
fi

# 判断端口是否存在
netstat -lntp|grep "sshd" &>/dev/null

if [ $? -eq 0 ];then
        sleep 1
        echo "is alive"
else
        echo "is dead"
fi

# 判断进程是否存在
ps aux|grep sshd|grep -v|grep -v "pts"
if [ $? -eq 0 ];then
        echo "exist"
else
        echo "do not exist"
fi

根据不同的系统装yum 源

# cat /etc/redhat-release 可以查看系统版本
tt=$(awk 'print $(NF-1)' /etc/redhat-release)
echo $tt%%.*

#!/usr/bin/bash

tt=$(awk 'print $(NF-1)' /etc/redhat-release)

if [ $tt%%.* -eq "7" ];then
        #配置仓库
        mkdir -p /etc/yum.repos.d/backup
        mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
        cat >/etc/yum.repos.d/base.repo<<-EOF
        [base]
        name=Local Base Yum Source
        baseurl=ftp://192.168.56.1/base/7/x86_64
        enable=1
        gpgcheck=0
        EOF
        echo "7配好了"

elif [ $tt%%.* -eq "6" ];then
        # 配置仓库
        echo " 6配好了"
fi

安装不同版本的PHP

cat <<-EOF
1. Installed PHP 5.5
2. Installed PHP 6.6
3. Installed PHP 7.7
EOF

read -p " 请选择 [1|2|3|q]:" install
# 判断输入的必须是整数
if [[ ! $install =~ ^[1-4]$ ]];then
        echo "输入错误"
        exit
fi
if [ $install -eq 1 ];then
        echo " php5.5"
elif [ $install -eq 2 ];then
        echo "php6.6"
elif [ $install -eq 3 ];then
        echo "php7.7"
elif [ $install == 'q' ];then
        exit
fi

备份Mysql 中的所有数据库,每一个库一个.sql文件,排除没用的

# mysql -hlocalhost -uroot -p123 -e "show databases;"
排除一些库 _schema, test, mysql
|sed 1d|grep -v ".*_schema"
|sde 1d|grep -Ev ".*_schema|test|mysql"
拼接mysqldump 语句
|sed -r 's#(.*)#mysqldump -uroot -p -B \1 >1.sql#g'
# 方式二, 循环

#!/usr/bin/bash

dd=$(mysql -uroot -p -e "show databases;"|sed 1d|grep -Ev ".*_schema|test|mysql")

for i in $db
do 
        #用mysqldump
        mysqldump -uroot -p -B $i > /backup/$i_$(date +%F).sql
done

以上是关于3.Shell字符串对比的主要内容,如果未能解决你的问题,请参考以下文章

linux(三十一)shell脚本基础知识整理

shell 编程

shell 学习笔记(最近更新:2022-02-18)

shell 学习笔记(最近更新:2022-02-18)

shell 学习笔记(最近更新:2022-02-18)

Shell基础入门