02 条件判断和循环命令
条件判断的基本用法
# 判断命令是否成功执行
if pwd
then
echo "成功执行 pwd 命令"
else
echo "pwd 命令执行失败"
fi
if grep "root" /etc/passwd > /dev/null && grep "mail" /etc/passwd > /dev/null
then
echo "root 用户和 mail 用户都存在"
if test -r /home/root || test -r /home/mail
then
echo "home 目录下可能存在 root 和 mail 同名主目录"
else
echo "home 目录下不存在 root 和 mail 同名主目录"
fi
fi
# 数值比较。注意括号内容和括号之间必须存在空格
var=10
if [ $var -gt 5 ] # -ge 为大于等于
then
echo "值大于5"
if [ $var -eq 5 ]
then
echo "值等于5"
if [ $var -lt 5 ] # -le 为小于等于
then
echo "值小于5"
if [ $var -ne 5 ]
then
echo "值不等于5"
# -z 判断字符串是否为空
# -n 判断字符串是否不为空
testuser=''
if [ -z $testuser ]
then
echo "字符串为空"
elif [ $testuser = zhangsan ]
then
echo "字符串的值是 zhangsan"
elif [ $testuser != zhangsan ]
then
echo "字符串的值不是 zhangsan"
fi
循环命令的基本用法
-
循环读取值
#!/bin/bash list=aaa bbb ccc "New York" for item in $list do echo "$item" # New York 会被分开输出 done item=ddd # shell 中声明的变量都是全局变量,使用 local 关键字定义局部变量:local item=ddd echo "$item" # 查询内容并输出到其他文件中 getList=$( head -n1 /etc/passwd | grep root ) echo $getList for list in $getList do IFS=: # 循环默认以空格作为分隔符,使用 IFS 可将分隔符改为“:” for item in $list do echo $item done done>output.txt # 将内容覆盖保存到文件中 # 循环创建文件夹 for i in {1..5} do mkdir -p /opt/dir$i done -
循环判断目录下的文件类型
#!/bin/bash # iterate through all the files in a directory for file in /home/rich/test/* do if [ -d "$file" ] then echo "$file is a directory" elif [ -f "$file" ] then echo "$file is a file" fi done
-
C语言风格的 for 循环
j=0 for (( i=0;i<=100;i++ )) do j=$(( j+i )) # j=$[ $j+$i ] 注意二者的区别 done echo $j
-
while 循环展示
var1=10 while [ $var1 -gt 0 ] do echo $var1 var1=$[ $var1 - 1 ] done