本文共 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/