Linux学习之shell脚本——条件语句与循环语句
2017-04-12 23:41
1066 查看
if条件语句
和其他语言类比,我们只需要了解if,
if...else,
if..else if...else...三种形式在shell中的使用。
在
shell中,最基本的
if的语法如下
if [ 条件 ] then 符合条件的执行逻辑 fi
或
if [ 条件 ]; then 符合条件的执行逻辑 fi
两种的区别在于
if和
then是否写在一行,如果写在一行使用
;隔开。
fi表示
if语句的结束,及代码范围。
注意:
[]中的条件两边都有一个空格。
if...else的在shell中的写法如下:
if [ 条件 ] then 符合条件执行的逻辑 else 不符合条件执行的逻辑 fi
if...else if...else在shell中的写法:
if [ 条件 1 ] then 做 1 的事情 elif [ 条件 2 ] then 做 2 的事情 elif [ 条件 3 ] then 做 3 的事情 else 做其他事情 fi
最后看一个例子:
#!/bin/bash if [ $1 = "one" ] then echo "1" elif [ $1 = "two" ] then echo "2" else echo "3" fi
在
if判断的条件里,使用的是
=号,这有区别于其他编程语言,但同样
shell可以使用
==号。注意
=号两边有空格,如果不加空格,会认为是赋值操作。
很简单,就是判断输入,显示不同的结果,看一下执行结果
[root@iZ2zebizp6le568407aeayZ shell]# ./condition.sh two 2
条件测试
if中关键的便是判断条件,那么可以做哪些条件判断呢?
字符串
$string1 = $string2:两个字符串是否相等。
$string1 != $string2:两个字符串是否不等。
-z $string:字符串是否为null。
-n $string:字符串是否不为null。
数字
$num1 -eq $num2:判断两个数值是否相等,区别于
=。
=号是判断字符串是否相等。
$num1 -ne $num2:判断两个数值是否不等。
$num1 -lt $num2:判断num1是否小于num2。
$num1 -le $num2:判断num1是否小于等于num2。
$num1 -gt $num2:判断num1是否大于num2。
$num1 -ge $num2:判断num1是否大于等于num2。
测试文件
-e $file:文件是否存在。
-d $file:文件是否是一个目录。
-f $file:文件是否是一个文件。
-L $file:文件是否是一个符号连接文件。
-r $file:文件是否是可读的。
-w $file:文件是否是可写的。
-x $file:文件是否是可执行的。
与,或,非判断条件
&&: 逻辑与。
||: 逻辑或。
!: 逻辑非。
注意:他们的使用方式不同。
与和或是以
[]为一个整体,如下
if [ 条件 ] && [ 条件 ] then 符合条件的执行逻辑 fi
而非的使用方式如下
if [ ! 条件 ] then 符合条件的执行逻辑 fi
case 多条件选择
在最初的if中编写了例子
if [ $1 = "one" ] then echo "1" elif [ $1 = "two" ] then echo "2" else echo "3" fi
可以将其修改为
case语句:修改之后的如下
#!/bin/bash case $1 in "one") echo "1" ;; "two") echo "2" ;; *) echo "3" ;; esac
case $1 in:类似于其他语言的
switch(xxx)一样。
"one"):匹配项,类似于
case X:。
echo "1":符合匹配项执行的逻辑。
;;: 类似于
break;结束。
*):类似于
default。
esac:
case语句的结束标记。
注意:匹配项可以用正则表达式进行匹配。
看一下运行的结果
[root@iZ2zebizp6le568407aeayZ shell]# ./condition_case.sh two 2
while 循环
while循环的语法如下:
while [ 条件 ] do 做某些事 done
或
while [ 条件 ]; do 做某些事 done
注意:条件为真是,才会做do之后的逻辑,为什么强调这个呢,因为shell中有一个
until语法。和其正好相反。
until循环
while循环表示如果条件为真,则执行do中的逻辑,而
until和
while正好相反,虽然语法类似
until [ 条件 ] do 做某些事 done
或
until [ 条件 ]; do 做某些事 done
但是,其是当条件为false是,才会走
do之后的逻辑。
for循环
for循环的语法如下:
for 变量 in '值1' '值2' '值3' ... '值n' do 做某些事 done
当然我们可以在
in之后不用谢一大串,而是用变量去代替。
#!/bin/bash fileList=`ls` for file in $fileList do echo "file found : $file" done
首先通过
ls命令查找当前目录下的所有文件。
其次通过
for循环遍历变量,并打印。
运行的结果如下:
[root@iZ2zebizp6le568407aeayZ shell]# ./for.sh file found : condition_case.sh file found : condition.sh file found : for.sh file found : read_variable.sh file found : test.sh file found : variable_array.sh file found : variable_porams.sh file found : variable.sh
相关文章推荐
- Linux学习(九)-----shell脚本学习 条件判断和循环
- Shell脚本学习(二):条件语句与循环语句
- 04- Shell脚本学习--条件控制和循环语句
- 【Linux】中shell脚本语法篇之条件语句和循环语句
- Linux学习第二十七篇--脚本的条件判断和循环
- shell脚本编写 之 条件选择,条件判断,循环语句
- linux之基础shell脚本编程2 if语句循环判断
- Linux就该这么学--Shell脚本条件语句(二)
- shell脚本中用到的条件和循环语句
- leeboy的linux学习十五 shell中条件测试和简单的条件语句实例
- shell脚本编程之循环语句学习笔记
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- shell脚本中用到的条件和循环语句
- Linux就该这么学--Shell脚本条件语句(一)
- Shell脚本的条件控制和循环语句
- Shell脚本的条件控制和循环语句
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- shell脚本编程之循环语句学习笔记
- Linux笔记之shell脚本4:条件语句
- Shell脚本的条件控制和循环语句