博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019/02/17 shell脚本编程函数02
阅读量:3923 次
发布时间:2019-05-23

本文共 1135 字,大约阅读时间需要 3 分钟。

函数的参数咋shell编程语言,它的使用风格和其他语言差异比较大,函数的参数也是$1 2和脚本的参数一样,容易混淆

在这里插入图片描述
其他的开发一般语言如java是定义在里面的
在这里插入图片描述
定义的函数想要和其他脚本混用,将来在别的脚本引用函数就可以了,创建functions文件
在这里插入图片描述
如何引用
在这里插入图片描述
在这里插入图片描述
.或source 引用functions文件,表示文件里的函数都被引用
在这里插入图片描述
在这里插入图片描述
很多操作系统的脚本就是调用的这个函数
在这里插入图片描述
在这里插入图片描述
functions文件了有一个有意思的函数action,可以提示ok,failed
在这里插入图片描述
**echo -n 不换行
shift ¥2变成¥1
¥@所有参数
**
在这里插入图片描述
success和failure也是个函数
在这里插入图片描述
在这里插入图片描述
setcolor——success代表什么颜色,打印颜色的
31红色,32绿色
在这里插入图片描述
在这里插入图片描述
functions 这个文件在6,7都有
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果函数已经修改或进行调整,而原本已经引用,可以先把函数删除(unset),再重新引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
set命令可以显示变量,也可以显示定义的所有函数
变量在这里插入图片描述
函数在这里插入图片描述
declare -f 只显示函数
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
如果定义一个函数以后,bash(开启子shell),函数是否能使用
在这里插入图片描述
+export 全局函数 -f变量不用加f,但是函数就需要加f
在这里插入图片描述
函数需要分开申明(变量是一起),但是函数这样的用法很少
在这里插入图片描述
调用函数开启子shell不可用,那就需要在脚本里先把函数申明成全局
在这里插入图片描述
申明全局
在这里插入图片描述
就可以在子shell中使用了
在这里插入图片描述
在这里插入图片描述等价的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有些书以为普通变量是全局变量(因为declare -ig要申明全局变量)
在这里插入图片描述
函数内部调用自己,递归调用(要注意嵌套深度,避免死掉情况),会记录以前未结束函数的状态
在这里插入图片描述
理论上这个数字会不断增加
在这里插入图片描述
在这里插入图片描述进入死循环
在这里插入图片描述
内存变少(因为函数没执行完,系统会保留它的状态),会造成崩溃死机,所以递归调用嵌套深度要加以控制,否则会出现死机的情况
在这里插入图片描述
在这里插入图片描述
&后台执行
这个小游戏就是基于递归调用开发的,就是不断地调用自己,不断地消耗系统资源,什么时候系统崩溃了了就结束了
在这里插入图片描述

在这里插入图片描述

维基百科上有各种各样的fork炸弹
在这里插入图片描述
在这里插入图片描述
一个正整数的阶乘等于1x2x3x…xn
0的阶乘等于 0!=1,1!=1
n!=(n-1)!xn
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数内部的¥1代表函数的参数,函数外部的¥1代表脚本的参数
在这里插入图片描述
在这里插入图片描述
**
执行为 $[4¥(fact $[4-1】)] ( 4fact 3 )=46=24
第一次执行为 $[3¥(fact $[3-1】)] ( 3fact 2 )=32=6**
**fact 2
$[3
¥(fact $[2-1】)] ( 2*fact 1 ) =2
fact 1
fact 1=1**

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
判断文件是否存在
在这里插入图片描述
在这里插入图片描述
原来的lib64拷贝到/mnt/sysroot/lib64下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
斐波那契数列,就是每个数字就是前两个数字相加,移动多少步就是2的n次方-1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转载地址:http://iwkgn.baihongyu.com/

你可能感兴趣的文章
ural 1018 Binary Apple Tree(树形DP)建二叉树
查看>>
poj 1155 TELE (树形DP+优化)
查看>>
poj 2486 Apple Tree(树形DP,状态好纠结。。。)
查看>>
Bribing FIPA(树形DP)输入难,学会stringstream的用法,map的使用
查看>>
poj 1947 Rebuilding Roads(树形DP)
查看>>
ural 1056 Computer Net(树形DP)需要用到两遍dfs
查看>>
poj 1848 Tree(树形DP,太难了,三种状态,四种状态转换)
查看>>
zoj 3626 Treasure Hunt I(树形DP+分组背包)
查看>>
hdu 1011 Starship Troopers(树形DP+背包问题)
查看>>
poj 3107 Godfather(树形DP,点的个数较多, 删点使得剩余部分结点最多的最小值)
查看>>
poj 2378 Tree Cutting(树形DP,删点使得独立的部分结点数不超过n/2)
查看>>
poj 1655 Balancing Act(树形DP,删点)
查看>>
poj 3140 Contestants Division(树形DP+删边)注意数据超整形
查看>>
hdu 3586 Information Disturbing(树形DP+二分查找+删变暖)
查看>>
hdu 4003 Find Metal Mineral(树形DP+分组背包,每个物品必须只能选一次)
查看>>
hdu 4276 The Ghost Blows Light(树形DP+最短路+分组背包)好题。。。
查看>>
zoj 3537 Cake(区间DP+最优三角形剖分)待续
查看>>
poj 2955 Brackets(区间DP,经典问题)求有规律的括号的最大长度
查看>>
poj 1651 Multiplication Puzzle(区间DP,直接用矩阵相乘的方式也对)
查看>>
zoj 3469 Food Delivery(区间DP,好题,)
查看>>