Day02-SHELL自动化编程-运算与判断

8. Shell编程必知必会的运算

  • 目标:通过shell脚本+awk和其他方式,实现在脚本中进行统计与计算

  • 主要内容:

    • 运算符
    • 运算的命令和符号

8.1 运算符

shell-运算符含义
+加法符号
-减法符号
*乘法符号
/除法符号
%取余
^或** 幂、指数2^10=1024 10个2相乘
i=i+1 i++计数,计算次数
j=j+?? j+=??求和,累加
&&并且,前一个命令执行成功,再执行后面的命令(判断)
||或者,前一个命令执行失败了,再执行后面的命令(判断)
  • % 生成指定范围的随机数
    在这里插入图片描述
随机的数字(n)对一个数字取余可以得到0到n-1范围的随机数。
echo $RANDOM%5 |bc
  • &&
检查目录是否存在
ls /etc && echo 目录存在
  • ||
目录不存在则创建
ls /data || mkdir -p /data

8.2 运算方法

运算的命令/符号说明应用场景
awk可以进行计算,带小数,可以与shell脚本进行变量传递一般计算都可以用awk
bc带小数一般计算都可以用bc,需要安装
expr进行计算,整数一般用于检查输入内容是否为数字(方法之一)
let进行计算,整数,变量直接使用即可用于计算i++
$(())进行计算,整数,变量直接使用即可
$[ ]进行计算,整数,变量直接使用即可

8.2.1 awk进行计算

  • 基础用法
[root@m01 ~]# awk '{print 1/3}'
0.333333
0.333333
^C
[root@m01 ~]# awk 'BEGIN{print 1/3}'
0.333333
[root@m01 ~]# awk 'BEGIN{print 2^10}'
1024
[root@m01 ~]# awk 'BEGIN{print 2^9}'
512
  • 在awk中使用shell变量。
awk -vn1=1  -vn2=3  'BEGIN{print n1/n2}'
0.333333

在这里插入图片描述

awk -v选项用于创建或修改awk中的变量。 -v是shell脚本与awk桥梁

在awk中各种变量直接使用即可,不要加上$n1,如果加上了会被awk识别为取列
在这里插入图片描述

8.2.2 bc

  • 基本用法即可. -l显示小数
echo 1/3 |bc -l
echo 2^10 |bc -l

8.2.3 expr

  • 使用注意事项:使用空格,对*号转义
[root@m01 ~]# expr 1+1
1+1
[root@m01 ~]# expr 1 + 1
2
[root@m01 ~]# expr 1 * 1
expr: 语法错误
[root@m01 ~]# expr 2 \* 2
4
[root@m01 ~]# expr 2 - 2
0
[root@m01 ~]# expr 2 / 2
1
  • 小坑:了解:计算0 + 0 查看命令的返回值。
    expr 进行计算的时候结果为0 ,返回值就是1
    未来通过其他方法检查是否为数字.
[root@m01 ~]# expr 1 + 1
2
[root@m01 ~]# echo $?
0
[root@m01 ~]# expr 0 + 0
0
[root@m01 ~]# echo $?
1
[root@m01 ~]# expr 0 + 0 + 666
666
[root@m01 ~]# echo $?
0

案例10:对输入的内容检查是否为数字

  • 思路:
    • 输入字符串给变量num
    • 检查num 是否为数字 expr
    • 检查返回值即可
[root@m01 devops-shell]# cat 10-check_num.sh 
#!/bin/bash
##############################################################
# File Name:10-check_num.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
read -p "请输入任意信息:" str

#2.检查
expr "$str" + 666 &>/dev/null

#3.检查结果
if [ $? -eq 0 ];then
  echo "$str 是数字"
else
  echo "$str 不是数字"
fi

if [ $str = -666 ];then
  echo "恭喜触发隐藏功能,获得1次穿越机会"
fi
[root@m01 devops-shell]# sh 10-check_num.sh 
请输入任意信息:6
6 是数字
[root@m01 devops-shell]# sh 10-check_num.sh 
请输入任意信息:0
0 是数字
[root@m01 devops-shell]# sh 10-check_num.sh 
请输入任意信息:lidao
lidao 不是数字
[root@m01 devops-shell]# sh 10-check_num.sh 
请输入任意信息:-666
-666 不是数字
恭喜触发隐藏功能,获得1次穿越机会

8.2.4 let,$(()),$[]

  • let
[root@m01 devops-shell]# n1=66
[root@m01 devops-shell]# n2=99
[root@m01 devops-shell]# let c=n1+n2
[root@m01 devops-shell]# echo $c
165
[root@m01 devops-shell]# i=1
[root@m01 devops-shell]# let i++
[root@m01 devops-shell]# echo $i
2
[root@m01 devops-shell]# let i++
[root@m01 devops-shell]# echo $i
3
  • $(())
n1=666
n2=999
echo $((n1+n2))
1665
d=$((n1+n2))   这是用法
echo $d
1665
  • $[]
n1=666
n2=999
e=$[n1+n2]
echo $e
1665

8.3 案例

案例11:计算器,传入脚本中2个参数,进行计算,输出结果。(传参)

  • 要求
sh  11.num_calc.sh  10 20
计算10-20:结果
计算10+20:结果
计算10*20:结果
计算10/20:结果
  • 流程
    • 用户传入2个参数
    • 判断是否为数字,如果不是,显示提示信息然后脚本结束.
      增加个判断脚本参数个数是2.(这个判断与上面的重复,可以省略)
    • 进行计算,输出结果(awk)
[root@m01 devops-shell]# cat 11-clc_v1.sh 
#!/bin/bash
##############################################################
# File Name:11-clc_v1.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
num1=$1
num2=$2

#2.判断是否为数字
expr "$num1" + "$num2" + 666 &>/dev/null
if [ $? -ne 0 ];then
  echo "Usage: $0 数字1 数字2"
  echo "请输入数字"
  exit 1
fi

#3.计算
plus=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1+n2 }'`
min=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1-n2 }'`
cheng=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1*n2 }'`
chu=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1/n2 }'`

#4.输出
cat<<EOF
计算$num1 + $num2=$plus
计算$num1 - $num2=$min
计算$num1 * $num2=$cheng
计算$num1 / $num2=$chu
EOF

[root@m01 devops-shell]# sh 11-clc_v1.sh a b
Usage: 11-clc_v1.sh 数字1 数字2
请输入数字
[root@m01 devops-shell]# sh 11-clc_v1.sh a 6
Usage: 11-clc_v1.sh 数字1 数字2
请输入数字
  oot@m01 devops-shell]# sh 11-clc_v1.sh 2 3
计算2 + 3=5
计算2 - 3=-1
计算2 * 3=6
计算2 / 3=0.666667

案例12:计算器,传入脚本中2个参数,进行计算,输出结果。(read)

[root@m01 devops-shell]# vim 14-clc_v3.sh 
#!/bin/bash
##############################################################
# File Name:14-clc_v3.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
#num1=$1
#num2=$2
read -p "请输入数字:num1 num2 " num1 num2

#2.判断是否为数字
#判断小数正则^-?[0-9]+\.?[0-9]+$

[[ $num1 =~ ^-?[0-9]+$ ]] || {
  echo "$num1 必须是数字"
  exit 1
}

[[ $num2 =~ ^-?[0-9]+$ ]] || {
  echo "$num2 必须是数字"
  exit 1
}

#3.计算
plus=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1+n2 }'`
min=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1-n2 }'`
cheng=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1*n2 }'`
chu=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1/n2 }'`

#4.输出
cat<<EOF
计算$num1 + $num2=$plus
"14-clc_v3.sh" 40L, 894C 已写入                                                          
[root@m01 devops-shell]# sh 14-clc_v3.sh 
请输入数字:num1 num2 12 4
计算12 + 4=16
计算12 - 4=8
计算12 * 4=48
计算12 / 4=3

在这里插入图片描述

8.4 小结

  • 掌握常用的运算符 && ||
  • 掌握运算命令,符号:awk,bc,expr,let,$(()),$[ ]
  • 完成案例
    • 判断是否为数字,如果不是数字退出脚本exit 1
    • 计算器-传参
    • 计算器-read

9. Shell编程-加点逻辑-判断

  • 条件表达式-裸奔版本的判断(最基本)
  • if判断-更加灵活判断
  • case语句-适用于做选择

9.1 条件表达式

  • 条件表达式属于判断中的核心,if后面都在使用它.
  • 目标:
    • 熟练掌握条件表达式的格式.
    • 熟练使用条件表达式进行判断(文件,大小,与或非)

9.1.1 格式

  • 条件表达式也可以叫条件测试语句

案例13-面试题-[] [[]]区别

含义与特点test 或 [ ][[ ]] 或 (( )) (小括号)
共同点都可以用于判断都可以用于判断
区别1仅支持普通判断,不支持正则[[ ]] 普通判断,支持正则
区别2表示逻辑关系(与或非)符号不同 -a -o ! -gt[[ ]] && || ! > < <= >=
应用场景大部分情况下使用 [] 进行常见判断[[ ]] 使用正则的时候使用2对中括号,(())可以用于运算

9.1.2 判断文件

  • 条件表达式符号
条件表达式-文件说明
-ffile 判断是否存在,判断这个是否为文件,如果是则为真(成立)
-ddir 判断是否存在,判断这个是否为目录,如果是则为真(成立)
-xexecutable 判断是否存在,是否有执行权限
-ssize 判断是否存在,文件大小是否大于0 (是否为空) 非空为真
-r是否有读权限
-w是否有写权限
-ntnewer than 两个文件修改时间 是否更加新
-otolder than 两个文件修改时间 是否更加老
-L软连接
-e是否存在(任何类型文件)
  • 检查指定的文件是否存在
1. 条件测试语句,不会直接提示对错,通过返回值提示.
[ -f /etc/hosts ]
echo $?

2. 判断文件是否存在格式
[ -f /etc/hosts ] && echo "成立 " || echo "失败"
[ -f /etchosts ] && echo "成立 " || echo "失败"
test -f /etchosts && echo "成立 " || echo "失败"

注意格式:[空格 -f /etc/hosts 空格]

  • 检查目录是否存在
[ -d /etc/ ] && echo "成立 " || echo "失败"
成立
[ -d /etc/hosts ] && echo "成立 " || echo "失败"
失败

温馨提示:执行流程

&& 表示前面命令执行成功然后执行echo 成立。

|| 表示前面命令执行失败了,echo 失败

  • -x判断是否有执行权限
检查/etc/rc.d/rc.local是否有执行权限.
[ -x /etc/rc.d/rc.local ] && echo "成立 " || echo "失败"
失败

ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 102 2020

/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
[ -x /etc/rc.d/rc.local ] && echo "成立 " || echo "失败"
成立
  • -x的系统脚本的使用案例
[ -x /sbin/ip ] || exit 1
ip命令是否有执行权限,如果没有则退出。
可以看/etc/init.d/network
  • -s检查文件内容是否为空,非空则为真
[ -s /etc/hosts ] && echo "成立 " || echo "失败"
成立

touch lidao996.txt
ll lidao996.txt
-rw-r--r-- 1 root root 0 618 09:21 lidao996.txt
[ -s lidao996.txt ] && echo "成立 " || echo "失败"
失败

9.1.3 对比字符串

  • 用于对比或比较2个字符串内容
条件表达式-字符串对比说明
“str1” = “str2”str1是否等于str2,如果相等则为真
“str1” != “str2”str1是否等于str2,如果不相等则为真
-z “str”zero 检查str字符串是否为空,空的则为真。
-n “str”not zero 检查str字符串是否为空,非空的则为真
  • 对比2个字符串是否相等
input=start
[ "$input" = "start" ] && echo "成立 " || echo "失败"
成立

str1=lidao996
str2=lidao007
[ "$str1" = "$str2" ] && echo "成立 " || echo "失败"
失败

[ “$UID” ≠ “0” ] && exit 4 #判断是否为root执行

企业级小技巧:

在进行字符串比较的时候变量尾巴可以加上个x,防止变量为空,造成匹配/执行失败.

[root@oldboy-devops-shell ~]# [ "${str1}x" = "${str2}x" ] && echo "成立 " || echo "失败"
失败
[root@oldboy-devops-shell ~]# [ "$str1"x = "$str2"x ] && echo "成立 " || echo "失败"
失败
  • 检查字符串是否为空
unset str2
echo $str2 这个变量是空的
[ -z "$str2" ] && echo "成立 " || echo "失败"
成立
[ -n "$str2" ] && echo "成立 " || echo "失败"
失败

9.1.4 比大小(整数)

温馨提示:记忆关键单词

-eq equal 等于
-gt great than 大于
-lt less than 小于

条件表达式-整数相关[][[ ]]
大于-gt great than>
大于等于-ge great equal>=
小于-lt less than<
小于等于-le less equal<=
等于-eq equal==
不等于-ne not equal!=
不支持小数的对比,仅支持整数
  • 比较大小 []
[ 666 -gt 1 ] && echo "成立 " || echo "失败"
成立
[ 0 -gt -1 ] && echo "成立 " || echo "失败"
成立
[ 0 -gt -1000 ] && echo "成立 " || echo "失败"
成立
[ 0 -gt 0.5 ] && echo "成立 " || echo "失败"
-bash: [: 0.5: 期待整数表达式
失败
  • 比较大小[[]]
[[ 60 > 6 ]] && echo "成立 " || echo "失败"
成立
[[ 6 >= 6 ]] && echo "成立 " || echo "失败"
-bash: 条件表达式中有语法错误
-bash: `6' 附近有语法错误
不推荐使用,对比的时候会有语法问题。
这里面也可以用-gt -lt   ........

9.1.5 逻辑判断

  • 多个条件表示同时成立,表示或者,表示取反.

  • 与或非

条件表达式-逻辑判断[][[ ]]
与(同时成立)条件1 -a 条件2 (and)&&
或(只有有个成立的就行)条件1 -o 条件2 (or)||
非(取反)!!
  • 王L同学找女朋友要求女的,人是中国的
-a 同时成立
sex=nv
state=china
[ "$sex" = "nv" -a "$guo"  = "china" ] && echo 肯定能成 || echo 不一定,还需努力
肯定能成

guo=world
[ "$sex" = "nv" -a "$guo"  = "china" ] && echo 肯定能成 || echo 不一定,还需努力
不一定,还需努力

-o 或者
echo $sex  $guo
nv world
[ "$sex" = "nv" -o "$guo"  = "china" ] && echo 肯定能成 || echo 不一定,还需努力
肯定能成

9.1.6 使用正则判断

  • 初步使用正则匹配
num=666
[[ $num =~ [0-9] ]] && echo 成立 || echo 失败
成立
num=lidao996
[[ $num =~ [0-9] ]] && echo 成立 || echo 失败
成立               目前的正则,仅仅表示变量中只要有数字就行(包含

案例:使用正则精确匹配数字

[[ $num =~ ^[0-9]+$ ]] && echo 成立 || echo 失败
失败         变量的值 开头结尾中间全是数字 连续数字
num=666
[[ $num =~ ^[0-9]+$ ]] && echo 成立 || echo 失败
成立

在这里插入图片描述

案例14:优化之前的计算器脚本,加入正则判断参数是否为数字

[root@m01 devops-shell]# cat 14-clc_v2.sh 
#!/bin/bash
##############################################################
# File Name:14-clc_v2.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
num1=$1
num2=$2

#2.判断是否为数字
#判断小数正则^-?[0-9]+\.?[0-9]+$

[[ $num1 =~ ^-?[0-9]+$ ]] || {
  echo "$num1 必须是数字"
  exit 1
}

[[ $num2 =~ ^-?[0-9]+$ ]] || {
  echo "$num2 必须是数字"
  exit 1
}

#3.计算
plus=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1+n2 }'`
min=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1-n2 }'`
cheng=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1*n2 }'`
chu=`awk -vn1=$num1 -vn2=$num2 'BEGIN{ print n1/n2 }'`

#4.输出
cat<<EOF
计算$num1 + $num2=$plus
计算$num1 - $num2=$min
计算$num1 * $num2=$cheng
计算$num1 / $num2=$chu
EOF

[root@m01 devops-shell]# sh 14-clc_v2.sh  4 li
li 必须是数字
[root@m01 devops-shell]# sh 14-clc_v2.sh  4 5
计算4 + 5=9
计算4 - 5=-1
计算4 * 5=20
计算4 / 5=0.8
[root@m01 devops-shell]# sh 14-clc_v2.sh  4 -5
计算4 + -5=-1
计算4 - -5=9
计算4 * -5=-20
计算4 / -5=-0.8
支持负数的正则 "\$num1" =~ ^-?[0-9]+$
判断小数正则  ^-?[0-9]+\.?[0-9]+$

9.1.7 条件表达式小结

面试题:[] [[ ]]区别

条件表达式分类必会熟悉
文件-f -d -x -s-r -w -nt -ot -L …
字符串比较= != ==-n -z
比较大小-eq -ne -gt -ge -lt -le
逻辑-a ! -o
正则[[ n u m =   [ 0 − 9 ] + num =~ ^[0-9]+ num= [09]+ ]]

9.2 if

  • 应用:if一般与条件表达式一起使用,也可以直接加上命令

  • 目标:

    • if判断适用于更加复杂的判断与检查
    • if判断语句的格式
  • 分类:根据满足/不满足条件后,做什么,可以分类单分支,双分支,多分支

9.2.1 单分支判断

  • 第1种-单分支

引用场景:与&&或||类似,用于放在脚本开头进行判断,脚本参数数量,输入内容是否符合规则

if 条件;then
   满足条件后执行的内容。
fi

if 条件
then
  满足条件后执行的内容。
fi

温馨提示: 这种形式类似于&&或||形式。

案例-如果脚本参数个数不是2,则提示错误提示

[ $# -eq 2 ] || {
   echo "必须要2个数字"
   exit 1
}


if [ $# -ne 2 ];then
   echo "脚本必须要2个参数"
   exit 1
fi

9.2.2 双分支判断

if 条件;then
   满足条件后执行的内容。
else
   不满足条件执行的内容。
fi


if 丁同学条件;then
   迎娶白富美,富婆.
else
   是个女的就行.
fi

案例14:检查根分区磁盘空间使用率

  • 如果大于等于80%提示磁盘空间不足.

  • 否则提示磁盘空间正常.

  • 分析步骤:

    • 取出根分区,磁盘空间使用率。(不带百分号)
    • 进行判断
      • 大于等于80%
      • 否则
[root@m01 devops-shell]# cat 15-disk-check.sh 
#!/bin/bash
##############################################################
# File Name:15-disk-check.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
error=4
root_usage=`df -h | grep -w '/' | awk -F '[ %]+' '{print $(NF-1)}'`

#2.if
if [ $root_usage -ge $error ];then
  echo "磁盘空间不足,请尽快处理"
else
  echo "磁盘空间正常"
fi

[root@m01 devops-shell]# sh 15-disk-check.sh 
磁盘空间不足,请尽快处理
[root@m01 devops-shell]# sh -x 15-disk-check.sh 
+ error=4
++ grep -w /
++ df -h
++ awk -F '[ %]+' '{print $(NF-1)}'
+ root_usage=7
+ '[' 7 -ge 4 ']'
+ echo 磁盘空间不足,请尽快处理
磁盘空间不足,请尽快处理

[root@m01 devops-shell]# sh 15-disk-check.sh 
磁盘空间正常
[root@m01 devops-shell]# sh -x 15-disk-check.sh 
+ error=80
++ awk -F '[ %]+' '{print $(NF-1)}'
++ grep -w /
++ df -h
+ root_usage=7
+ '[' 7 -ge 80 ']'
+ echo 磁盘空间正常
磁盘空间正常

9.2.3 多分支判断

if 条件;then
   满足条件后执行的内容。
elif 条件;then   #else if
   满足elif条件,执行的内容。
elif 条件;then
   满足elif条件,执行的内容。  
else
   不满足条件执行的内容。
fi

案例16-比大小的改为,多分支格式。
… 与13案例一致

[root@m01 devops-shell]# cat 16-compare_num.sh 
#!/bin/bash
##############################################################
# File Name:16-compare_num.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
read -p "请输入数字:num1 num2 " num1 num2

#2.检查是否为数字
[[ $num1 =~ ^-?[0-9]+$ ]] || {
  echo "$num1 必须是数字"
  exit 1
}

[[ $num2 =~ ^-?[0-9]+$ ]] || {
  echo "$num2 必须是数字"
  exit 1
}

#3.进行比较
if [ $num1 -eq $num2 ];then
  echo "$num1 == $num2"

elif [ $num1 -gt $num2 ];then
  echo "$num1 > $num2"

else 
  echo "$num1 < $num2"
fi

[root@m01 devops-shell]# sh 16-compare_num.sh
请输入数字:num1 num2 10 11
10 < 11
[root@m01 devops-shell]# sh 16-compare_num.sh
请输入数字:num1 num2 lidao 2
lidao 必须是数字
[root@m01 devops-shell]# sh 16-compare_num.sh
请输入数字:num1 num2 1 1
1 == 1

案例17-输出指定用户的信息

温馨提示:这个脚本未来可以用于做安全检查。

  • 检查
    • 是否输入了用户名。
    • 这个用户是否存在,如果不存在则退出,提示用户不存在。
    • 如果用户存在则输出下面的信息:
      • 是否可以登录
      • 用户uid,gid
      • 用户家目录
      • 最近1次登录情况。

步骤:

  • 执行脚本输入用户名(参数/read)
  • 判断用户是否存在,如果不存在则提示用户不存在,退出脚本.
  • 如果用户存在输出用户的信息.
    • 是否可以登录(命令解释器)
    • uid,gid(过滤)
    • 用户家目录
    • 最近1次登录情况
[root@m01 devops-shell]# cat 17-check_user.sh 
#!/bin/bash
##############################################################
# File Name:17-check_user.sh
# Version:V1.0
# Author:oldboy lidao996
# Organization:www.oldboyedu.com
# Desc:
##############################################################

#1.vars
user=${1:-root}

#2.检查用户是否存在
id $user &>/dev/null
[ $? -ne 0 ] && {
  echo "用户不存在"
  exit 1
}

#3.获取用户信息
user_shell=`grep "^${user}:" /etc/passwd | awk -F: '{print $NF}'`
if [ "$user_shell" = "/bin/bash" ];then
  user_login="可以登录"
else
  user_login="不可以登录"
fi

user_uid=`grep "^${user}:" /etc/passwd | awk -F: '{print $3}'`
user_gid=`grep "^${user}:" /etc/passwd | awk -F: '{print $4}'`
user_homedir=`grep "^${user}:" /etc/passwd | awk -F: '{print $(NF-1)}'`
user_lastlog=`lastlog | grep -w "${user}"`

#4.输出用户信息
echo "##############################################"
echo "####用户名:${user}"
echo "####用户uid:${user_uid}"
echo "####用户gid:${user_gid}"
echo "####用户是否可以登录:${user_login}"
echo "####用户家目录:${user_homedir}"
echo "####用户最后一次登录情况:${user_lastlog}"
echo "##############################################"

[root@m01 devops-shell]# sh 17-check_user.sh 
##############################################
####用户名:root
####用户uid:0
####用户gid:0
####用户是否可以登录:可以登录
####用户家目录:/root
####用户最后一次登录情况:root             pts/1    10.0.0.1         一 4月  8 11:16:01 +0800 2024
##############################################
[root@m01 devops-shell]# sh 17-check_user.sh oldboy
##############################################
####用户名:oldboy
####用户uid:1000
####用户gid:1000
####用户是否可以登录:可以登录
####用户家目录:/home/oldboy
####用户最后一次登录情况:oldboy                                     **从未登录过**
##############################################
[root@m01 devops-shell]# sh 17-check_user.sh lidao996
用户不存在

9.2.4 小结

  • 通过if完成更为复杂判断。

  • if判断可以使用条件(条件表达式),写命令。
    在这里插入图片描述

今日总结

  • shell脚本中如何进行计算.awk,bc,expr,let

  • shell脚本中的判断

    • 条件表达式: []
    • if判断
  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值