房屋中介网站建设方案,wordpress 多大VPS,广州市招标采购网官网,wordpress产品插件格式说明#xff1a;操作概念命令说明及举例十三.while、for特殊用法、selet循环与菜单、函数while特殊用法while循环的特殊用法(遍历文件的每一行)#xff1a;while read line; do循环体done 依次读取/PATH/FROM/SOMEFILE文件中的每一行#xff0c;且将行赋值给变量line练习…格式说明操作概念命令说明及举例十三.while、for特殊用法、selet循环与菜单、函数while特殊用法while循环的特殊用法(遍历文件的每一行)while read line; do循环体done 依次读取/PATH/FROM/SOMEFILE文件中的每一行且将行赋值给变量line练习扫描/etc/passwd文件每一行如发现GECOS字段为空则填充用户名和单位电话为62985600并提示该用户的GECOS信息修改成功。以wang用户身份登陆并传送文件到wang的家目录for特殊用法双小括号方法即((…))格式也可以用于算术运算 双小括号方法也可以使bash Shell实现C语言风格的变量操作\#I10\#((I))for循环的特殊格式for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))do循环体done控制变量初始化仅在运行到循环代码段时执行一次控制变量的修正表达式每轮循环结束会先进行控制变量修正运算而后再做条件判断练习打印9*9selet 循环与菜单select variable in listdo循环体命令doneselect 循环主要用于创建菜单按数字顺序排列的菜单项将显示在标准错误上并显示PS3 提示符等待用户输入用户输入菜单列表中的某个数字执行相应的命令 用户输入被保存在内置变量REPLY 中。select 是个无限循环因此要记住用break 命令退出循环或用exit 命令终止脚本。也可以按ctrlc 退出循环。select 经常和case 联合使用与for 循环类似可以省略in list 此时使用位置参量举例 (PS3定义selet命令提示符)函数函数function是由若干条shell命令组成的语句块实现代码重用和模块化编程。它与shell程序形式上是相似的不同的是它不是一个单独的进程不能独立运行而是shell程序的一部分。函数和shell程序比较相似区别在于– Shell程序在子Shell中运行– 而Shell函数在当前Shell中运行。因此在当前Shell中函数可以对shell中变量进行修改定义函数语法一function f_name{...函数体...}语法二function f_name(){...函数体...}语法三f_name(){...函数体...}函数使用函数的定义和使用可在交互式环境下定义函数可将函数放在脚本文件中作为它的一部分可放在只包含函数的单独文件中调用函数只有被调用才会执行调用给定函数名函数名出现的地方会被自动替换为函数代码函数的生命周期被调用时创建返回时终止unset 函数名 删除函数函数的优先级比别名高函数在使用前必须定义因此应将函数定义放在脚本开始部分直至shell首次发现它后才能使用调用函数仅使用其函数名即可。.示例$cat func1\#!/bin/bash\# func1hello(){echo Hello there todays date is date %F}echo now going to the function hellohelloecho back from the function可以将经常使用的函数存入函数文件然后将函数文件载入shell。文件名可任意选取但最好与相关任务有某种联系。例如functions.main一旦函数文件载入shell就可以在命令行或脚本中调用函数。可以使用set命令查看所有定义的函数其输出列表包括已经载入shell的所有函数。若要改动函数首先用unset命令从shell中删除函数。改动完毕后再重新载入此文件。函数文件示例$cat functions.main\#!/bin/bash\#functions.mainfindit(){if [ $# -lt 1 ] ; thenecho Usage:findit filereturn 1fifind / -name $1 –print}载入函数函数文件已创建好后要将它载入shell定位函数文件并载入shell的格式filename 或source filename注意此即 这里的文件名要带正确路径示例上例中的函数可使用如下命令$ . functions.main函数变量变量作用域环境变量当前shell和子shell有效本地变量只在当前shell进程有效为执行脚本会启动专用子shell进程因此本地变量的作用范围是当前shell脚本程序文件包括脚本中的函数。局部变量函数的生命周期函数结束时变量被自动销毁注意如果函数中有局部变量如果其名称同本地变量使用局部变量。在函数中定义局部变量的方法(此变量只作用于函数体本身)local NAMEVALUE函数返回值函数有两种返回值函数的执行结果返回值(1) 使用echo或printf命令进行输出(2) 函数体中调用命令的输出结果函数的退出状态码(1) 默认取决于函数中执行的最后一条命令的退出状态码(2) 自定义退出状态码其格式为return 从函数中返回用最后状态命令决定返回值return 0 无错误返回。return 1-255 有错误返回函数递归实例函数递归函数直接或间接调用自身注意递归层数递归实例阶乘是基斯顿·卡曼于1808 年发明的运算符号是数学术语一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积并且有0的阶乘为1。自然数n的阶乘写作n!。n!1×2×3×…×n。阶乘亦可以递归方式定义0!1n!(n-1)!×n。n!n(n-1)(n-2)…1n(n-1)! n(n-1)(n-2)!示例fact.sh#!/bin/bash#fact() {if [ $1 -eq 0 -o $1 -eq 1 ]; thenecho 1elseecho $[$1*$(fact $[$1-1])]fi}fact $1练习5.斐波那契数列又称黄金分割数列因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入故又称为“兔子数列”指的是这样一个数列0、1、1、2、3、5、8、13、21、34、……斐波纳契数列以如下被以递归的方法定义F(0)0F(1)1F(n)F(n-1)F(n-2)(n≥2) 写一个函数求n阶斐波那契数列6.汉诺塔原创文章作者自己泡面如若转载请注明出处http://www.178linux.com/39205