查看: 1083|回复: 1
收起左侧

[教程经验] Shell脚本语法——分支和循环

Lihoon 2020-8-8 17:13:41 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x

分支

9 if语句

创建command.sh文件:vi command.sh

#! /bin/bash
date
echo "打印完时间,表示已经执行了command.sh文件了。"

echo "调用ls指令,查看目录下内容。"
ls

echo "调用pwd指令,查看当前工作目录:"
pwd
lihoon@lihoon:~/code/Linux_shell$ ls
command.sh  sample.sh      Shell笔记2.md  temp.sh
note.txt    shell笔记1.md  temp           temp.txt
lihoon@lihoon:~/code/Linux_shell$ vi command.sh                             <<==创建文件,输入上述内容
lihoon@lihoon:~/code/Linux_shell$ if [ -f command.sh ]; then        <<==if判断语句
> source command.sh                     <<==执行command.sh文件
> fi                                                            <<==if语句结尾
 2020年 08月 05日 星期三 23:44:48 CST
 打印完时间,表示已经执行了command.sh文件了。
 调用ls指令,查看目录下内容。
 command.sh  sample.sh      Shell笔记2.md  temp.sh
 note.txt    shell笔记1.md  temp           temp.txt
 调用pwd指令,查看当前工作目录:
 /home/lihoon/code/Linux_shell 

10    case语句

创建f.sh文件,内容如下:

#! /bin/sh
echo "Is it morning? Please answer yes or no:"
read Yes_or_no          <<==读取输入值

case "$Yes_or_no" in
        yes|y|Yes|YES)                  <<==变量值满足这4类条件之一时执行下一行(   |表示或)
                echo "Good morning.";;
        [n|no|N|NO|No]*)            <<==变量值满足这5类条件之一时执行下一行
                echo "Good afternoon.";;
        *)                                          <<==其他情况,类似于C++中的default
                echo "Sorry, I can't understand."
                return 1;;
        esac                                    <<==case结束符

在终端运行f.sh文件

lihoon@lihoon:~/code/Linux_shell$ source f.sh               (注意:需要使用chmod指令修改文件权限为7xx)
Is it morning? Please answer yes or no:
y
Good morning.

11    for循环:for/do/done

创建for.sh文件,写入如下内容:

#! /bin/sh

for FRUIT in apple banana peer; do
        echo "I like "$FRUIT.""
done

在终端运行for.sh文件

lihoon@lihoon:~/code/Linux_shell$ ./for.sh 
I like apple.
I like banana.
I like peer.

12    whie循环

创建while.sh文件,写入如下内容,用于测试输入密码

#! /bin/sh

echo "Please enter password:"

# 用于统计输入次数
CONTOUR=1

#读取输入的密码值
read PASSWORD

while [ "$PASSWORD" != "lihoon123" -a $CONTOUR -lt 3 ]; do
        echo "Error, try again:"
        read PASSWORD
        CONTOUR=$(($CONTOUR+1))

done

# while执行完成后,判断密码是否正确
if [ "$PASSWORD" = "lihoon123" ];then
        echo "############################"
        echo "Welcom to ubuntu for lihoon."
        echo "############################"
else
        echo "You are not the owner."
fi

在终端执行文件(前提是修改文件权限为可执行权限):

lihoon@lihoon:~/code/Linux_shell$ ./while.sh 
Please enter password:
lihoon
Error, try again:
lihoon123
############################
Welcom to ubuntu for lihoon.
############################

lihoon@lihoon:~/code/Linux_shell$ ./while.sh 
Please enter password:
lihoon
Error, try again:
lihoon
Error, try again:
lihoon
You are not the owner.

13    break和continue

break[n]——指定跳出几层循环;

continue——跳过本次循环,但是不跳出循环;

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部