shell 脚本编程学习(三) 条件控制,循环控制

编程当然少不了条件控制和循环控制了,shell 脚本也有自己的条件和循环方法。

条件控制

if 语句

条件控制中最常用的就是 if 判断了,shell 中通过 if-then 语句来实现。它的结构是:

if some_condition; then
    do something
fi

if condition_1; then
    do something
elif condition_2
    do something
else
    do something
fi

与 js 中的 if、else、else if 道理相同,需要注意的是 if 控制结构要用反过来写的 if 即 fi 来结束,在 shell 的其他控制结构中也有这样的规则。
不同于其他编程语言(例如 js),在 if 的 condition 中我们不能直接用 ==、!=、>、< 之类的逻辑运算符来写条件,需要借助一个 test 命令来实现逻辑判断。示例如下:

NAME='jack'
if ( test $NAME = 'jack' ); then # 判断 NAME 是 jack
    echo 'hello jack'
fi

if ( test $NAME != 'jack' ); then # 判断 NAME 不是 jack
    echo 'not jack'
fi

这里要注意 if 和括号之间的空格以及括号内语句中的空格是必须的,因为它们是shell 划分命令参数的依据。除了逻辑判断之外,test 命令还能通过一些选项判断文件目录和文件权限等。如果觉得写 test 麻烦,也可以用中括号代替括号,与写 test 的方式等价,同样也要注意命令中的空格。例如:

$NAME = 'jack'
$DIR = '/etc'
if [ $NAME = 'jack' ] # 逻辑判断,等价于 if ( test $NAME = 'jack' )
if [ -d $DIR ] # 判断是否是文件夹
if [ -e $DIR ] # 判断文件是否存在
if [ -f $DIR ] # 判断文件存在并且是一个普通文件(不是目录或其他特殊的文件)

注意不像其他编程语言有数值类型,在 shell 中所有的变量都是字符串。所以想要进行数字的运算和比较需要借助其他命令(例如 expr),不能直接加减。

NUM=1
NUM=NUM+1
echo $NUM # 输出 1+1 而不是 2
NUM=1
NUM=`expr $NUM + 1` # 用 expr 命令进行数字运算,注意数字和运算符之间要有空格
echo $NUM # 输出 2

case 语句

当判断一个变量的多种取值时,用 case 语句会比 if 更方便和清楚。shell 中 case 语句的语法如下:

case expression in
    pattern1)
        action1
    ;;
    pattern2)
        action2
    ;;
    pattern3)
        action3
    ;;
    *)
        defaultAction
    ;;
esac

除了语法不一样外,和其他语言的 case 作用相同,case 结构也用反写的 case 即 esac 来结束。

循环控制

while 语句

while 循环在编程语言中很常见,只要满足特定的条件,while 语句就重复执行代码块。在 shell 中条件判断也可以通过 test 命令或中括号的形式来实现,示例如下:

# 循环输出 1 到 9 的数字
$NUM=1
while [ $NUM != 10 ]
do
    echo $NUM
    NUM=`expr $NUM + 1`
done

until 语句

until 语句的条件与 while 相反,只要不满足特定的条件,until 语句就重复执行。例如:

# 循环输出 9 到 1 的数字
$NUM=9
until [ $NUM = 0 ] # 输出 9 到 1 的数字
do
    echo $NUM
    NUM=`expr $NUM - 1`
done

以上就是 shell 中常用的控制结构了,与其他编程语言类似,但要注意语法和细节上的差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们可以开始实验shell脚本编程。 首先,我们需要了解一些基本的shell编程语法和命令。下面是一些常用的命令: 1. echo:用于输出文本或变量的值。 2. read:用于从标准输入读取用户输入的值。 3. if:用于条件判断。 4. for:用于循环操作。 5. while:用于循环操作。 6. case:用于多分支选择。 接下来,我们可以编写一些简单的shell脚本来练习这些命令的使用。以下是一些示例: 1. 输出Hello World ```shell #!/bin/bash echo "Hello World" ``` 2. 读取用户输入并输出 ```shell #!/bin/bash echo "Please enter your name:" read name echo "Hello, $name!" ``` 3. 判断用户输入的数字是否为偶数 ```shell #!/bin/bash echo "Please enter a number:" read num if [ $((num%2)) -eq 0 ] then echo "$num is even." else echo "$num is odd." fi ``` 4. 循环输出1-10的数字 ```shell #!/bin/bash for i in {1..10} do echo $i done ``` 5. 循环输出当前目录下所有文件名 ```shell #!/bin/bash for file in * do echo $file done ``` 6. 多分支选择 ```shell #!/bin/bash echo "Please enter a fruit name:" read fruit case $fruit in "apple") echo "It's a kind of fruit." ;; "potato") echo "It's not a fruit." ;; *) echo "I don't know what it is." ;; esac ``` 以上是一些简单的shell脚本示例,你可以根据需要进行修改和扩展。在实验过程,你还可以尝试使用其他的命令和语法,提高自己的shell编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值