- if 分支控制流---单分支
if 测试语句
then
(真执行)
fi
------------
if [判断表达式]
then
(真执行)
fi
#上述的判断等价于C语言的 if(表达式) {}
例子:
1.使用 test 语句进行判断
if test "abc" = "abc"
then
echo "字符串相同"
fi
2.使用 [ ] 代替test语句
if [ "123" = "123" ]
then
echo "字符串相同"
fi
注意:编写表达式的时候,一定要注意空格问题 !
2.多分支
语法:
if [ 表达式 ]
then
(真执行)
elif [ 表达式 ]
then
(真执行)
elif [ 表达式 ]
then
(真执行)
.....
else
(假执行)
fi
--------------------------
等价于C 语言的 if() {} else if() {} ..... else {}
多分支判断例子:
#定义一个整型数据
declare -i VAR=$1;
#进行多分支判断
if [ $VAR -gt 100 ]
then
echo "VAR > 100"
elif [ $VAR -gt 50 ]
then
echo "VAR > 50"
elif [ $VAR -gt 20 ]
then
echo "VAR > 20"
else
echo "VAR < 20"
fi
3.Shell 脚本的输入输出
//相当于printf 输出
echo -e "hello\tworld" #激活转义字符
echo "hello\tworld" #不激活转义字符
//相当于scanf 输入
read name #从标准输入读取输入并赋值给变量 name。
read -p "text"
打印提示(text),等待输入,并将输入存储在REPLY中。
---------------------------------------------------------------
#从键盘中获取数据放入变量 VAR 中
read VAR
echo $VAR
#从键盘中获取数据放入变量 VAR 中
read -p "请输入数据的值" VAR1
echo $VAR1
#默认会把数据存储到 REPLY 环境变量中
read -p "text"
echo $REPLY
4.Shell 选择控制流
语法:
case 变量 in
数据1) 语句 ;;
数据2) 语句 ;;
数据3) 语句 ;;
*) 语句 ;;
esac
#相当于C语言的 switch
switch (变量)
case 数据1: 语句; break;
case 数据2: 语句; break;
default: 语句; break;
---------例子------------
read -p "请输入一个整型数据" VAR
case $VAR in
1) echo "输入数据1" ;;
2) echo "输入数据2" ;;
3) echo "输入数据3" ;;
*) echo "输入数据*" ;;
esac
5.Shell 循环控制流--for 循环
语法:
for 变量 in {一定范围的值} #把in 后面的值不断赋值给 变量 直到赋值完毕为止 !
do
执行语句
done
------例子:输出0-20的所有值----------
#从1 开始 到 20 不断赋值给 VAR
for VAR in {1..20}
do
echo $VAR
done
----例子:把一个命令的结果赋值给变量进行循环----
for STR in `ls`
do
echo $STR
done
6. while 循环
语法:
while [ 表达式 ] #当前表达式为真时,会执行语句。表达为假则结束循环
do
语句
done
#等价于 C语言 while(表达式) { 语句 }
------例子:输出 0 - 100 以内的所有数据
while [ $a -le 100 ]
do
echo $a
a=$a+1
done
7.until 循环
语法:
until [ 表达式 ] #当表达式为假,则执行循环 当表达式为真,则结束循环
do
语句
done
8.
Shell 函数
注意: 1.shell 函数定义的时候 不需要填写参数类型 与 函数的返回值类型 ,返回值默认为整型
2.shell 函数传递参数通过 命令行参数 $1 $2 $3 ... 获取
定义语法:
函数名()
{
//函数的功能
return 0;
}
调用语法:
函数名 参数1 参数2
-------------例子:函数的定义与调用-------------
#!/bin/bash
#定义一个函数
myfunc()
{
echo "哈哈哈!我是一个函数!"
}
#调用函数
myfunc
9.函数参数传递
#!/bin/bash
#定义一个函数
myfunc()
{
#接收函数传递的参数
ARGV_1=$1
ARGV_2=$2
#打印参数的个数
echo $#
#打印参数的值
echo $ARGV_1
echo $ARGV_2
}
#调用函数,并传递参数
myfunc hello world
10.获取函数的返回值
#!/bin/bash
#定义一个函数
myfunc()
{
echo "函数1被调用"
return 5;
}
#定义一个函数
myfunc2()
{
echo "函数2被调用"
return 8;
}
#调用函数
myfunc
#获取函数的返回值
echo $?
myfunc2
echo $?