转载自 https://segmentfault.com/a/1190000011704345
一、条件判断式语句
1.1 按照文件类型进行判断

两种判断格式:
test -e /root/install.log[-e /root/install.log]//推荐


1.2 按文件权限判断

1.3 两个文件之间进行比较

1.4 两个整数之间的比较

1.5 字符串的判断

1.6 多重条件判断

二、if语句
2.1 单分支if语句


列子1:判断当前登录用户是否为root
#!/bin/bash
test=$(env | grep "USER"|cut -d "="-f2
if["$test" == root]
then
echo "Current user is root."
fi
列子2:判断分区使用率
查看磁盘使用情况:
df -h

2.2 双分支if语句

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

列子2:判断apache是否启动

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

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


三、case语句



四、for循环语句
4.1 语法一



4.2 语法二



批量删除用户:

五、while循环和until循环
5.1 while循环



5.2 until循环


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命令的名称。
本文详细介绍Bash脚本的基础语法,包括条件判断语句、if语句、case语句、循环语句等,以及如何使用函数和按行读取变量或命令输出,适合初学者快速上手。
647

被折叠的 条评论
为什么被折叠?



