Linux Shell编程之条件判断与流程控制

转载自  https://segmentfault.com/a/1190000011704345

 

一、条件判断式语句

1.1 按照文件类型进行判断

clipboard.png

两种判断格式:

  1. test -e /root/install.log
  2. [-e /root/install.log] //推荐

clipboard.png

clipboard.png

1.2 按文件权限判断

clipboard.png

1.3 两个文件之间进行比较

clipboard.png

1.4 两个整数之间的比较

clipboard.png

1.5 字符串的判断

clipboard.png

1.6 多重条件判断

clipboard.png

二、if语句

2.1 单分支if语句

clipboard.png

clipboard.png

列子1:判断当前登录用户是否为root

#!/bin/bash
test=$(env | grep "USER"|cut -d "="-f2
if["$test" == root]
    then
    echo "Current user is root."
fi

列子2:判断分区使用率
查看磁盘使用情况:

df -h

clipboard.png

2.2 双分支if语句

clipboard.png

列子1:判断输入的是否是一个目录

clipboard.png

列子2:判断apache是否启动

clipboard.png

注:不要把检测脚本名含有httpd,否则当apache停止了还是会输出httpd is ok!。

2.3 多分支if语句

clipboard.png

判断用户输入的是什么文件:

clipboard.png

clipboard.png

三、case语句

clipboard.png

clipboard.png

clipboard.png

四、for循环语句

4.1 语法一

clipboard.png

clipboard.png

clipboard.png

4.2 语法二

clipboard.png

clipboard.png

clipboard.png

批量删除用户:

clipboard.png

五、while循环和until循环

5.1 while循环

clipboard.png

clipboard.png

clipboard.png

5.2 until循环

clipboard.png

clipboard.png

 

5.3 时间

logfile=net_delay_$(date +%Y%m%d%H%M)

 

 

6.函数

function demoFun1(){
    echo "这是我的第一个 入参" + $1

    return `expr 1 + 1`
}

7. 按行读取变量或者命令输出

引用  https://qastack.cn/unix/9784/how-can-i-read-line-by-line-from-a-variable-in-bash

您可以使用while循环进行进程替换:

while read -r line
do
    echo "$line"
done < <(jobs)

读取多行变量的最佳方法是设置一个空白IFS变量,并printf在该变量后面加上换行符:

# Printf '%s\n' "$var" is necessary because printf '%s' "$var" on a
# variable that doesn't end with a newline then the while loop will
# completely miss the last line of the variable.
while IFS= read -r line
do
   echo "$line"
done < <(printf '%s\n' "$var")

注意:根据shellcheck sc2031的规定,使用进程替代比使用管道更可取,以避免[巧妙地]创建子shell。

另外,请注意,通过命名变量jobs可能会引起混淆,因为这也是常见的shell命令的名称。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值