加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux学习之shell脚本——条件语句与循环语句

发布时间:2023-01-08 10:41:22 所属栏目:Linux 来源:未知
导读: if条件语句
和其他语言类比,我们只需要了解if,if...else,if..else if...else...三种形式在shell中的使用。
在shell中,最基本的if的语法如下
if [ 条件 ]
then
符合条件的执行逻辑

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 ]
then1 的事情
elif [ 条件 2 ]
then2 的事情
elif [ 条件 3 ]
then3 的事情
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中关键的便是判断条件,那么可以做哪些条件判断呢?

字符串

数字

测试文件

与,或,非判断条件

注意:他们的使用方式不同。

与和或是以[]为一个整体,如下

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之后的逻辑,为什么强调这个呢linux语句,因为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

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章