文档章节

Linux shell if条件判断1

o
 osc_y8yehimr
发布于 2019/03/17 20:00
字数 579
阅读 19
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

shell 逻辑控制语句:
     
     分支判断结构
       if
       case
     循环结构
        for
        while
        until
        


if语句结构

用法1

if CONDITON; then
   statement
   statement
   
fi


CONDITION条件的写法:

       COMMAND
      [ expression ]
      
expression表达式:
     
     数学表达式
     字符表达式
     文件目录表达式
     
数学表达式:
    [ number1 -eq number2 ]           等于
    [ number1 -ne number2 ]           不等于
    [ number1 -gt number2 ]           大于
    [ number1 -ge number2 ]           大于等于
    [ number1 -lt number2 ]           小于
    [ number1 -le number2 ]           小于等于
    

编写脚本,有用户输入用户名,判断用户不存在则创建

 

[root@wei shell]# vim if.sh
#!/bin/bash
#
read -p "请输入用户名: " name

id $name &> /dev/null
if [ $? -ne 0 ];then
read -p "输入密码:" passwd
useradd $name
echo "$passwd" | passwd --stdin $name &> /dev/null
echo "用户$name创建完成,初始密码为:$passwd"
fi


检测语法执行状况

[root@wei shell]# bash -x if.sh 
+ read -p '请输入用户名: ' name
请输入用户名: wei
+ id wei
+ '[' 1 -ne 0 ']'
+ read -p 输入密码: passwd
输入密码:123456
+ useradd wei
+ echo 123456
+ passwd --stdin wei
+ echo 用户wei创建完成,初始密码为:123456
用户wei创建完成,初始密码为:123456

检测语法错误

[root@wei shell]# bash -n if.sh 

条件语言脚本

用法2: 单分支if

if CONDITON; then
   statement
   statement

else
   statement
   statement
fi


编写脚本,由用户输入用户名,判断用户不存在则创建,并设置用户第一次登陆系统时需要修改密码。否则提示用户已存在

#!/bin/bash
#
read -p "请输入用户名: " name

if id $name &> /dev/null ;then
   echo " 用户$name已经存在"
else
   useradd $name
   read -p "输入密码:" passwd
   echo "$passwd" | passwd --stdin $name &> /dev/null
   passwd -e $name &> /dev/null   
   echo "用户$name创建完成,初始密码为:$passwd"
fi

由用户输入一个用户名,判断用户的UID和GID

判断的方式

[root@wei shell]# grep "hei" /etc/passwd
hei:x:1000:1000::/home/hei:/bin/bash
[root@wei shell]# grep "hei" /etc/passwd | awk -F: '{print $3,$4}'
1000 1000
[root@wei shell]# id -u hei
1000
[root@wei shell]# id -g hei
1000

脚本语法

#!/bin/bash
#
read -p "输入用户名:" name
user_id=$(id -u $name)
group_id=$(id -g $name)

if [ $user_id -eq $group_id  ];then
   echo "Good"
else
   echo "Bad"
fi


执行结果

[root@wei shell]# bash id.sh 
输入用户名:hei
Good
[root@wei shell]# id hei
uid=1000(hei) gid=1000(hei) 组=1000(hei)
[root@wei shell]# usermod -u 1200 hei
[root@wei shell]# id hei
uid=1200(hei) gid=1000(hei) 组=1000(hei)
[root@wei shell]# bash id.sh 
输入用户名:hei
Bad

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

SnailSVN Pro for mac(SVN客户端) v1.9.9

macw为您带来SnailSVN Pro for mac ,SnailSVN Mac版是一款类似于 TortoiseSVN 的 Apache Subversion(SVN)客户端,与 Finder 紧密集成。SnailSVN Mac版允许你从 Finder 的上下文菜单中快速...

单手绕月
25分钟前
11
0
python网络编程(进程与多线程)

multiprocessing模块   由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。   multiprocessing包是Pytho...

osc_ky74f26k
25分钟前
5
0
CentOS7 redis5.0高可用部署

概述 Redis Sentinel为Redis提供高可用性。Redis Sentinel是一个分布式系统,Sentinel本身设计为在有多个Sentinel进程协同合作的配置中运行。具有多个Sentinel进程进行协作的优点如下: 1、当...

紅顏為君笑
25分钟前
12
0
Ocelot简易教程(四)之请求聚合以及服务发现

上篇文章给大家讲解了Ocelot的一些特性并对路由进行了详细的介绍,今天呢就大家一起来学习下Ocelot的请求聚合以及服务发现功能。希望能对大家有所帮助。 作者:依乐祝 原文地址:https://www...

osc_zo0djpuu
26分钟前
14
0
leetcode63(不同路径 II)--Java语言实现

求: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在...

拓拔北海
26分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部