-
shell控制流程
- if else 语法,test、[] 、[[]]、(())、let 使用
注意,如果没有else后等内容,else就不要写,直接fi结束if语句,注意用任何语法空格一定要多些,如=号两边,[]中都要每个空格不能少,否则可能会报错
在shell中条件判断有几种,test、[] 、[[]]、(())、let,其中
- test使用等同于[]
- [[]]支持 &&、||等逻辑语法,[]不支持,[] 需要使用-a,-o的语法实现与或判断
- (())使用等同于let,用于整数运算,且使用变量时可以不用加$号
#!/bin/bash
set -x
args=${@}
echo "所有参数${args}"
echo "参数1=$1"
echo "参数2=$2"
c=10
d=90
f=0
let "f = c + d"
echo "f的结果为"$f
a="nihao"
b="nihao"
if test $a = $b
then
echo "参数1为test"
else
echo "参数1不是test"
fi
#[]写法
if [ !$2 -o $2 = "do" ]
then
echo "参数2为do"
else
echo "参数2不为do"
fi
#[[]]写法
if [[ !$2 || $2 = "do" ]]
then
echo "第二次参数2为do"
else
echo "第二次参数2不为do"
fi
if [ $3 -ge $4 ]
then
echo "第三个参数大于第4"
else
echo "第三个参数小于第4"
fi
输出结果
[root@localhost temp]# sh test.sh test do 3 90
+ args='test do 3 90'
+ echo '所有参数test do 3 90'
所有参数test do 3 90
+ echo $'\345\217\202\346\225\2601=test'
参数1=test
+ echo $'\345\217\202\346\225\2602=do'
参数2=do
+ c=10
+ d=90
+ f=0
+ let 'f = c + d'
+ echo $'f\347\232\204\347\273\223\346\236\234\344\270\272100'
f的结果为100
+ a=nihao
+ b=nihao
+ test nihao = nihao
+ echo $'\345\217\202\346\225\2601\344\270\272test'
参数1为test
+ '[' '!do' -o do = do ']'
+ echo $'\345\217\202\346\225\2602\344\270\272do'
参数2为do
+ [[ -n !do ]]
+ echo $'\347\254\254\344\272\214\346\254\241\345\217\202\346\225\2602\344\270\272do'
第二次参数2为do
+ '[' 3 -ge 90 ']'
+ echo $'\347\254\254\344\270\211\344\270\252\345\217\202\346\225\260\345\260\217\344\272\216\347\254\2544'
第三个参数小于第4
- for循环写法
#!/bin/bash
array=(A B C e)
i=0
echo ${#array[*]}
for vr in ${array[*]}
do
echo "第${i}个元素${vr}"
i=`expr ${i} + 1`
done
输出结果:
4
第0个元素A
第1个元素B
第2个元素C
第3个元素e
注意,数据显示所用用${#array[*]}
- while语法,环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。
#!/bin/bash
a=0
while((${a}<3))
do
echo "第${a}次进入"
##表示+1
let "a++"
done
结果
第0次进入
第1次进入
第2次进入
注,shell一样支持break跳出循环,continue跳过当前循环
- case 写法,与if..else类似的条件判断
case $变量名 in
"值 1")
;;
如果变量的值等于值1,则执行程序1,值
2")
如果变量的值等于值2,则执行程序2
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
-
shell函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
其定义和js相似,为function定义
#!/bin/bash
myFunction(){
echo "第一个参数是$1"
echo "第二个参数是$2"
echo "第三个参数是$3"
}
myFunction 3 we
输出结果
第一个参数是3
第二个参数是we
第三个参数是
shell的函数传递参数,直接在调用处后面跟参数就行,用空格隔开,
方法内饮用,用$数字表示获取第几个参数
网友评论