Linux_shell控制结构

1. 选择控制结构

1.1 if…then命令
  • 用于实现单分支选择结构
# 语法格式1:
---------------------
if command
then
	commands
fi
#--------------------

# 语法格式2:
---------------------
if command; then
	commands
fi
#--------------------
1.2 工作逻辑
  1. 如果command执行成功,就执行then部分的commands命令,然后退出if命令
  2. 否则直接退出if命令,执行其后的命令
1.3 if…then…else命令
  • 用于实现双分支选择结构
#语法格式1:
#-----------
if command
then
	command1
else
	command2
fi	
#-----------

#语法格式2:
#-----------
if command; then
	command1
else
	command2
fi	
#-----------

#注:如果将两条shell命令放在同一行,则需要使用";"分隔
1.4 工作逻辑
  1. 如果command执行成功,就执行then部分的command1命令,然后退出if命令。
  2. 否则执行else部分的command2命令,然后退出if命令。
1.5 if命令嵌套
  • 用于实现多分支选择结构
#语法格式1:
#-------------
if command1
then
	command11
elif command2
then
	command22
...
[else
	commandnn]
fi
#-------------

#语法格式2:
#-------------
if command1; then
	command11
elif command2; then
	command22
...
[else
	commandnn]
fi
#-------------
  • 注意:if嵌套可以无限嵌套下去,但是不建议嵌套层次过深,不超过3层为宜
1.6 工作逻辑
  1. 如果command1执行成功,就执行then部分的command11命令,然后退出if命令
  2. 否则继续执行elif部分的command2命令,如果退出码为0,则执行then部分的command22,然后退出if命令
  3. 否则,如果后面还有elif部分,就继续进行步骤2的逻辑。
  4. 所有if或elif部分的命令均执行失败,如果else部分存在,则执行该部分的commandn,然后退出整个if命令,否则,直接退出整个if命令
1.7 case esac命令
# 语法格式1:
case value in
mode1)
command1
command2
...
;;
mode2)
command1
command2
...
;;
*)
command1
command2
...
;;
esac

# 语法格式2:
case value in
mode1) command1;command2;...;;
mode2) command1;command2;...;;
*) command1;command2;...;;
esac

注意:

  • 与C语言switch…case语句执行逻辑类似
  • ;; 类似于C语言switch…case语句中的break语句
  • *) 类似于C语言switch…case语句中的default:

2. 循环控制结构

2.1 for命令
#语法格式1:
#---------------
for var in list
do
	commands
done
#---------------

#语法格式2:
#---------------
for var in list; do commands; done
#---------------
执行逻辑
  1. list表示一个序列,例如:多字符串、数组
  2. 每次从list中取一个元素放到var变量后,执行commands;
  3. 提取顺序为:自左向右
  4. 如果list已经没有可取元素后,整个循环退出
2.2 while命令
  • while命令可以看作if-then和for命令的混合体。
#语法格式:
while command
do
	commands
done
执行逻辑
  1. 如果command命令退出码为0,则执行do后的循环体;
  2. 如果command命令退出码非0,则退出while循环;

3. 函数

  • 有名称的代码段。
3.1 无参无返回值函数定义及调用
#无参数函数定义:
[function] 函数名()
{
	commands  # 函数体代码段
}

#无参数函数调用
函数名
3.2 有参有返回值函数定义及调用
#有参函数定义:
[function] 函数名()
{
	# 通过$1,$2,$3,...作为参数名编写函数体代码段
	commands
	return 返回值
}

#有参函数调用
#参数1:$1,参数2:$2,参数3:$3....
函数名 参数1 参数2 参数3
#接收函数返回值
变量名=$?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张加加加油!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值