linux编程进阶,Linux进阶:SHELL脚本编程进阶

shell 脚本编程进阶

流程控制

过程式编程语言

顺序执行

选着执行

循环执行

条件选择if语句

选择执行

注意:if语句可嵌套

单分支

if判断条;then

条件为真的分支代码

fi

双分支:

if判断条件;then

条件为真的分支的代码

else

条件为假的分支代码

fi

if语句

多分支

if 判断条件1; then

条件1为真的分支代码

elif 判断条件2; then

条件2为真的分支代码

elif 判断条件3; then

条件3为真的分支代码

else

以上条件都为假的分支代码

fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

if示例

根据命令的退出状态来执行命令

if ping -c1 -W2 station1 &> /dev/null; then

echo 'Station1 is UP'

elif grep "station1" ~/maintenance.txt &> /dev/null; then

echo 'Station1 is undergoing maintenance‘

else

echo 'Station1 is unexpectedly DOWN!'

exit 1

fi

条件判断:case语句

case 变量引用 in

PAT1)

分支1

;;

PAT2)

分支2

;;

...

*)

默认分支

;;

esac

case支持glob风格的通配符:

*: 任意长度任意字符

?: 任意单个字符

[]:指定范围内的任意单个字符

a|b: a或b

循环

循环执行

将某代码段重复运行多次

重复运行多少次

循环次数事先已知

循环次数事先未知

有进入条件和退出条件

for, while, until

for循环

for 变量名 in 列表;do

循环体

done

for i[i代表变量名] in {1..10};【in后面跟的是列表】do userdel -r user$i; done 【do和done中间的是循环体】

执行机制:

依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直

到列表中的元素耗尽,循环结束

例:[root@centos18:11:44bin]#sum=0; for num in 1 23 4 6 4;do sum=$[sum+num]; done; echo sum=$sum

sum=38

[root@centos18:12:58bin]#for num in 1 23 4 6 4;do echo "num=$num";done

num=1

num=23

num=4

num=6

num=4

[root@centos18:13:24bin]#sum=0; for num in {1..100};do sum=$[sum+num]; done; echo sum=$sum

sum=5050

[root@centos18:16:24bin]#sum=0; for num in `seq 10`;do sum=$[sum+num]; done; echo sum=$sum

sum=55

[root@centos18:16:47bin]#sum=0; for num in {1..100..2};do sum=$[sum+num]; done; echo sum=$sum

sum=2500

例:算出1到100 和

[root@centos18:27:29bin]#sum=0; for i in {1..100};do sum=$[sum+i];done;echo sum=$sum

sum=5050

[root@centos18:27:44bin]#sum=0; for i in `seq 1 2 100`;do sum=$[sum+i];done;echo sum=$sum

sum=2500

for循环

列表生成方式:

(1) 直接给出列表

(2) 整数列表:

(a) {start..end}

(b) $(seq [start [step]] end)

(3) 返回列表的命令

$(COMMAND)

(4) 使用glob,如:*.sh

(5) 变量引用;

$@, $*

while 循环

while CONDITION; do

循环体

done

CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后

会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为

“false”终止循环

因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地

进入条件:CONDITION为true

退出条件:CONDITION为false

until循环

until CONDITION; do

循环体

done

进入条件: CONDITION 为false

退出条件: CONDITION 为true

循环控制语句continue

用于循环体中

continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为

第1层

while CONDTIITON1; do

CMD1

...

if CONDITION2; then

continue

fi

CMDn

...

done

循环控制语句break

用于循环体中

break [N]:提前结束第N层循环,最内层为第1层

while CONDTIITON1; do

CMD1

...

if CONDITION2; then

break

fi

CMDn

...

done

循环控制shift命令

shift [n]

用于将参量列表 list 左移指定次数,缺省为左移一次。

参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍

历位置参量列表时,常用到 shift

./doit.sh a b c d e f g h

./shfit.sh a b c d e f g h

示例:doit.sh

#!/bin/bash

# Name: doit.sh

# Purpose: shift through command line arguments

# Usage: doit.sh [args]

while [ $# -gt 0 ] # or (( $# > 0 ))

do

echo $*

shift

done

示例:shift.sh

#!/bin/bash

#step through all the positional parameters

until [ -z "$1" ]

do

echo "$1"

shift

done

echo

创建无限循环

while true; do

循环体

done

until false; do

循环体

Done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux命令行与Shell脚本编程大全》第4版是一本系统介绍Linux命令行和Shell脚本编程的权威性书籍,该书从入门到进阶详细介绍了Linux命令行的使用方法以及Shell脚本的编写技巧。 书中首先介绍了Linux命令行的基础知识,包括文件系统操作、文件和目录管理、进程控制等内容。通过学习这些基础知识,读者可以熟悉常用的Linux命令,并能够自如地在命令行下完成各种操作。 接下来,书中详细介绍了Shell脚本的编写方法和技巧。Shell脚本是一种批处理语言,可以用于编写自动化脚本,简化重复的任务。书中介绍了Shell脚本的语法结构、变量和数组的使用、流程控制语句、函数、正则表达式等知识,并通过实例演示了各种实用的Shell脚本编程技巧。 此外,该书还介绍了一些常用的Shell工具和Shell脚本编程的高级技巧。例如,sed和awk是两个强大的文本处理工具,通过学习它们的使用方法,读者可以更高效地处理文本数据。此外,书中还介绍了如何编写可重用的Shell脚本、如何进行脚本调试和测试等内容,帮助读者提高Shell脚本编程的技能。 总的来说,《Linux命令行与Shell脚本编程大全》第4版是一本很全面、实用的Linux命令行和Shell脚本编程指南。无论是初学者还是有一定经验的读者,都可以通过阅读本书系统地学习Linux命令行和Shell脚本编程,提高自己在Linux环境下的技术水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值