shell编程脚本语法

学习了两个月的Linux,记住了很多命令,知道了脚本的作用,也被脚本杀死了大概一半的脑细胞,现在脚本还不能熟练运用,感觉亏了。心疼我的脑细胞,痛恨脚本,但不得不说,脚本是一个好东西啊,用起来真的方便,但是写起来真的烧脑袋呦!下面来总结一下这周学习的脚本语法,哇,语法虽然不多也不难,但是结合起来熟练运用还有一定的难度,何况现在的脚本才几行,以后要写几行,心里没点数吗!废话少说,开始

跳过最基础的命令行堆积的脚本,总结一下让脚本更简洁实用的语法

首先,条件选择if语句登场

if语句用法:常见的单分支,双分支,多分支。

实际中能不能用到单分支语句不能心里没点数吗,直接多分支,会了多分支,单双分支自然就会了

if 判断条件1; then

    条件为真的命令代码

elif 判断条件2;then

    条件为真的命令代码

elif 判断条件3;then

    条件为真的命令代码

else

    以上条件都为假的命令代码


举个例子:

wKiom1m8336A3cyoAAA59FLxfig785.png

完毕

条件判断:case语句

case $1 in

条件1)

    分支3

    ;;

条件2)

    分支2

    ;;

……

*)

    默认分支

    ;;

esac

case支持glob风格的通配符:

*: 任意长度任意字符 【比如搜索文件的话 K*)匹配所有K开头的文件名】

?: 任意单个字符

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

a|b: a或b

举个例子:

wKiom1m835Hx48m_AABMRxKRINM031.png

循环语句 for while until shift select

作用如其名,将某代码段重复运行多次

for循环用法

for 变量名 in 列表;do

    循环体

done

执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

【一般套路:变量名一般是上面定义过的变量,这里用来引用 如:$i 或者是位置变量 如:$1,$2

列表一般都是通过调用命令结果来生成的 如 `seq 1 10` $(ls /etc) 】

for循环还有一个特殊格式:和C语言类似

for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))

   (( i=0;    i<=100;        i++ ))

do

    循环体

done

举两个例子:(一个普通for循环,一个for循环特殊格式)

wKioL1m833Sgzj9-AABZgHcl11g241.png

wKioL1m84w6x5z20AAAkc550O7Y487.png

while循环语句:

用法:

while CONDITION;do

    循环体

done

CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环 因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

这里可以创建无限循环

while true;do

    循环体

done

for循环有特殊格式,while也有

while循环的特殊用法(遍历文件的每一行):

while read line; do

    循环体

done < /PATH/FROM/SOMEFILE

依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

用法介绍完毕,来举例: 

wKiom1m85lDw0iYbAAAyLHfzVaU358.png

wKiom1m87SvAGP_eAAA8QIQAXz4874.pngselect循环语句

用法:

select 变量名 in 列表  与for语句类似,套路也一样。

do 

      循环体命令

done

select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示 PS3 提示符,

等待用户输入,用户输入被保存在内置变量 REPLY 中

select 经常和 case 联合使用 生成菜单列表。[不是吃饭的菜单!!]

select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止脚本。也可以按 ctrl+c 退出循环

举例举例:wKioL1m88KWiZt8MAABoMVL-y1Q595.png循环控制shift命令;

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

当用到while语句,并且while 循环遍历位置参量列表时,常用到 shift

举例:

wKiom1m89GSQUp5lAAAYXlLZnLs535.png执行结果:(相信一看你就什么都懂了)

wKioL1m89FHR3lnMAAArUD8lCS4739.png

跳出单次循环continu语句:

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

来吧 举个例子吧:

wKiom1m89gyxQakOAAAu5ocTL-M275.png跳出整个循环break语句:

break [N]:提前结束第N层循环,最内层为第1层【注意是结束第N层循环,不是本次循环】

再举例:

wKiom1m89yaDEdMCAAAy5qumw9k029.png

到这里shell编程脚本的基础语句差不多介绍完了,之后还可以在脚本里调用函数,数组。这样,脚本的使用和编写就可以更加的简单明了,下次博客再介绍函数的定义和调用,数组的定义和调用吧,我要去写脚本了,bye~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章