前言
本文为笔者学习笔记,若有不妥之处,欢迎斧正。
一、shell脚本条件判断
shell脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。
1、if判断
语法原型及用法有以下三种:
第一种:
if 条件判断 ; then
//判断成立要做的事情
fi
代码演示:
#!/bin/bash
num1=10
num2=20
if (($num1 != $num2));then
echo "num1 != num2"
fi
运行结果如下:
num1 != num2
第二种:
if 条件判断 ; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
代码演示:
#!/bin/bash
num1=10
num2=10
if (($num1 != $num2));then
echo "num1 != num2"
else
echo "num1 == num2"
fi
运行结果如下:
num1 == num2
第三种:
if 条件判断 ; then
//条件判断成立要做的事情
elif [条件判断]; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
代码演示:
#!/bin/bash
num1=11
num2=12
if (($num1 > $num2));then
echo "num1 > num2"
elif (($num1 == $num2));then
echo "num1 == num2"
else
echo "num1 < num2"
fi
运行结果如下:
num1 < num2
2、case语句
语法原型:
case $变量 in
“第1个变量内容”)
程序段
;; //表示该程序块结束!!
“第2个变量内容”)
程序段;;
“第n个变量内容”)
程序段
;;
esac
#!/bin/bash
case $1 in
"1")
echo "hello world"
;;
"2")
echo "C YYDS"
;;
esac
运行结果如下:
//输入./demo12.sh 1
hello world
//输入./demo12.sh 2
C YYDS
二、shell脚本函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
函数语法如下:
function fname ()
{
//函数代码段
}
说明:
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
注意:函数调用时,只需要函数名即可
代码演示:
#!/bin/bash
num1=10
num2=15
function swap()
{
temp=$num1;
num1=$num2;
num2=$temp
}
echo "before swap:" $num1 $num2
swap
echo "after swap:" $num1 $num2
运行结果如下:
before swap: 10 15
after swap: 15 10
三、shell循环
shell脚本也支持循环,比如for、while和until。
1、while循环
表示当条件成立的时候就一直循环,直到条件不成立。
语法原型:
while 条件测试
do
执行命令
done
代码演示
#!/bin/bash
while [ "$value" != "close" ]
do
read -p "please input str:" value
done
echo "stop while"
运行结果如下:
please input str:1
please input str:2
please input str:sad
please input str:afaw
please input str:sfa
please input str:agf
please input str:asgg
please input str:
please input str:
please input str:agaw
please input str:
please input str:close
stop while
2、unitl循环
表示条件不成立的时候循环,条件成立以后就不循环了。
语法原型:
until 条件测试
do
执行命令
done
代码演示:
#!/bin/bash
until [ "$value" == "close" ]
do
read -p "please input str:" value
done
echo "stop until"
运行结果如下:
please input str:sad
please input str:fa
please input str:fef
please input str:sf
please input str:
please input str:ea
please input str:f
please input str:close
stop until
3、for循环
for循环,使用for循环可以知道有循环次数(次数可自行控制)。
第一种语法原型:
for 变量 in 串行
do
执行命令
done
代码演示:
#!/bin/bash
total=0
for num in 1 2 3 4 5 6 7 8 9 10
do
total=$(($total+$num))
echo "num is:" $num
done
echo "total is $total"
运行结果如下:
num is: 1
num is: 2
num is: 3
num is: 4
num is: 5
num is: 6
num is: 7
num is: 8
num is: 9
num is: 10
total is 55
第二种语法原型:
函数原型:
for((初始值; 限制值; 执行步长))
do
//循环代码段
done
代码演示:
#!/bin/bash
total=0
for (( i=1 ; i<=100 ; i=i+1)) #i=i+1可以换成i++
do
total=$(($total+$i))
done
echo "total is $total"
运行结果如下:
total is 5050