当前位置: 首页 > news >正文

php网站开发方案最近发生的热点新闻事件

php网站开发方案,最近发生的热点新闻事件,前端开发培训机构济南七里河,中央农村工作会议2023一、函数 1、创建函数 如果定义了同名函数,则新定义的函数就会覆盖原先的定义的函数,而且在运行时不会报错。 创建函数的语法: 方法1:使用关键字function function name { commands } shell脚本中的函数名不能重复 方法2&#x…

一、函数

1、创建函数

如果定义了同名函数,则新定义的函数就会覆盖原先的定义的函数,而且在运行时不会报错。

创建函数的语法:

方法1:使用关键字function

function name {

   commands

}

shell脚本中的函数名不能重复

方法2

name() {

  commands

}

函数名后的空括号name()表明正在定义的是一个函数。

2、使用函数

不能在函数定义之前调用函数,否则会报错。

#!/bin/bashfunction test {echo "测试123456"
}count=1
while [ $count -le 5 ]
dotestcount=$[ $count + 1 ]
done
echo "循环结束!"
test
echo "脚本运行结束!"
exit

3、函数返回值

使用退出状态码

默认情况下,函数的退出状态码是函数中最后一个命令返回的退出状态码。函数执行结束后,可以使用标准变量 $? 来确定函数的退出状态码。

#!/bin/bashfunc1() {echo "尝试展示不存在的文件。"ls -l badfile
}echo "测试函数:"
func1
echo "退出状态码是:$?"

如下所示,退出状态码是2,因为函数中的最后一个命令执行失败了,但 echo 命令却执行成功了。 所以,使用退出状态码的方法是一种危险的方法。

 使用return命令

bash shell会使用return命令以特定的退出状态码退出函数;return命令允许指定一个整数值作为函数的退出状态码。

#!/bin/bashfunc2() {read -p "请输入一个数值:" valueecho "将输入的数值翻倍。"return $[ $value * 2 ]
}func2
echo "新的值是 $?"
exit

当用此方法获取返回值时,需注意两点:

函数执行一结束就立刻读取返回值:如果在用$?变量提取函数返回值之前执行了其它命令,那么函数返回值就会丢失。$?变量保存的是最后执行的那个命令的退出状态码。

 退出状态码必须在0~255范围内:因为退出状态码必须小于256,因此函数结果也必须是一个小于256的整数值,如果大于256就会产生错误的值。

使用函数输出

#!/bin/bashfunc3() {read -p "请输入一个数值:" valueecho "将输入的数值翻倍。"echo $[ $value * 2 ] # 注意不是return
}result=$(func3)
echo "新的值是$result"
exit

4、向函数传递参数

 函数可以使用标准的位置变量来表示命令行中传给函数的任何参数,如函数名保存在$0变量中,函数参数依次保存在$1、$2等变量中。也可以使用特殊变量$#来确定传给函数的参数数量。

在shell脚本中调用函数时,必须将参数和函数名放在同一行。

用位置变量获取参数值

#!/bin/bashfunction func4 {if [ $# -eq 0 ] || [ $# -gt 2 ]thenecho -1elif [ $# -eq 1 ]thenecho $[ $1 + $1 ]elseecho $[ $1 + $2 ]fi
}echo  -n "传递两个参数:"
value=$(func4 10 15)
echo $valueecho -n "只传递一个参数:"
value=$(func4 20)
echo $valueecho -n "不传递参数:"
value=$(func4)
echo $valueecho -n "传递3个参数:"
value=$(func4 10 20 36)
echo $value

 要想在函数中使用脚本的命令行参数,必须在调用函数时手动将其传入。

func5() {echo $[ $1 * $2 ]
}if [ $# -eq 2 ]
thenvalue=$(func5 $1 $2)echo "结果是$value."
elseecho "错误。"

5、函数中的变量

全局变量

全局变量在shell脚本内任何地方都有效的变量。

在默认情况下,在脚本中定义的任何变量都是全局变量。在函数外定义的变量可在函数内正常访问。

#!/bin/bashfunction func1 {value=$[ $value *2 ]
}read -p "请输入一个值:" value
func1
echo "新的值是 $value"

局部变量

任何在函数内部使用的变量都可以被声明为局部变量,只需在变量声明之前加上关键字 local 即可:local var

也可在变量赋值语句中使用 local 关键字:local var=$[ $value + 7 ]

local关键字保证了变量仅在函数中有效,如果函数外有同名变量,那么shell会保持这两个变量的值互不干扰,意味着可以轻松地将函数变量和脚本变量分离开。

#!/bin/bashfunction func2 {local temp=$[ $value + 10 ]result=$[ $temp * 2 ]
}temp=5
value=8func2
echo "结果是$result"
if [ $temp -gt $value ]
thenecho "temp更大"
elseecho "value更大"
fi

6、向函数传递数组

将数组变量当做单个参数传递的话,是不会起作用的。如果想要将数组变量作为函数参数进行传递,那么函数只会提取数组变量的第一个元素。

#!/bin/bashfunction func3 {echo "参数是:$@"thisarray=$1echo "接收到的数组是 ${thisarray[*]}"
}myarray=(1 2 3 4 5 6)
echo "原始数组是:${myarray[*]}"
func3 $myarray

传递数组变量时必须先将数组变量拆解成多个数组元素,然后将这些数组元素作为函数参数传递,最后在函数内部,将所有的参数重新组合成一个新的数组变量。

#!/bin/bashfunction func5 {local newarraynewarray=(`echo "$@"`)echo "新数组是:${newarray[*]}"
}myarray=(1 2 3 4 5 6)
echo "原始数组是:${myarray[*]}"
func5 ${myarray[*]}

#!/bin/bashfunction addarray {local sum=0local newarraynewarray=(`echo "$@"`)for value in ${newarray[*]}dosum=$[ $sum + $value ]doneecho $sum
}myarray=(1 2 3 4 5 6)
echo "原始数组是:${myarray[*]}"
arg1=$(echo ${myarray[*]})
result=$(addarray $arg1)
echo "结果是 $result"

7、从函数返回数组

函数先用echo语句按正确顺序输出数组的各个元素,然后脚本再将数组元素重组成一个新的数组变量。

#!/bin/bashfunction arraydb {local origarraylocal newarraylocal elementlocal iorigarray=($(echo "$@")) newarray=($(echo "$@"))# "$@"会将每个参数作为独立的字符串保留element=$[ $# - 1 ] # $#表示参数数量for (( i = 0; i <= $element; i++ )){newarray[$i]=$[ ${origarray[$i]} * 2 ]}echo ${newarray[*]}
}myarray=(1 2 3 4 5 6)
echo "原始数组是:${myarray[*]}"
arg1=$(echo ${myarray[*]})
result=($(arraydb $arg1))
echo "新数组是:${result[*]}"

8、函数递归

 局部函数变量的一个特性是自成体系(self-containment),除了获取函数参数,自成体系函数不需要使用任何外部资源。这个特性使函数可以递归地调用,即函数通过调用自己得到结果。

递归函数通常有一个最终可以迭代到的基准值。

递归算法的经典例子就是计算阶乘。

#!/bin/bash
function factorial {if [ $1 -eq 1 ]thenecho 1elselocal temp=$[ $1 - 1 ]local result=$(factorial $temp)echo $[ $result * $1 ]fi
}read -p "请输入一个数值:" value
result=$(factorial $value)
echo "$value的阶乘是:$result"
exit

9、函数库

bash shell允许创建函数库文件,然后在多个shell脚本中引用此库文件。

可以通过 source 命令(也叫点号操作符)在shell脚本中运行库文件,它会在当前shell的上下文中执行命令,而不是创建新的shell并在其中执行命令。

格式:. ./绝对路径/函数库文件名

#!/bin/bash#创建一个函数库文件function addem {echo $[ $1 + $2 ]
}function multem {echo $[ $1 * $2 ]
}function divem {if [ $2 -ne 0 ]thenecho $[ $1 / $2 ]elseecho -1fi
}

在其它shell脚本中运行上面的函数库文件。

#!/bin/bash#用source命令允许库文件
. ./myfuncs.sh # 该函数库文件与此脚本在同一目录下value1=60
value2=20
result1=$(addem $value1 $value2)
echo "两数相加之和是:$result1"
result2=$(multem $value1 $value2)
echo "两数相乘之积是:$result2"
result3=$(divem $value1 $value2)
echo "两数相除之商是:$result3"

二、在命令行中使用函数

 一旦在shell中定义了函数,就可以在整个系统的任意目录中使用,而不用担心该函数是否位于PATH环境变量中。

1、在命令行中创建函数

因为shell会解释用户输入的命令,所以可以在命令行中直接定义一个函数。缺点就是,在退出shell时,函数也会跟着消失

单行方式

使用单行方式定义函数时,需要在每个命令后面加分号,这样shell才能知道哪里是命令的起止。

多行方式

使用多行方式定义函数时,bash shell会使用次提示符来提示输入更多命令,此方法不需要再每条命令后面加分号,只需按下回车键即可。

当输入函数末尾的花括号 } 时,shell就能知道用户已经完成函数的定义了。

2、在.bashrc文件中定义函数

可以将函数定义在每次新shell启动时都会重新读取该函数的地方:.bashrc 文件。

不管是交互式shell还是从现有shell启动新的shell,bash shell在每次启动时都会在用户主目录中查找.bashrc文件。

直接定义函数

 可以直接在用户主目录的.bashrc文件中定义函数。将函数直接放在末尾即可,如下所示。

 此函数在下次启动新的bash shell时生效,然后就能在系统中的任意地方使用此函数。

 

 源引函数文件

只要是在shell脚本中,就可以用source命令(点号操作符)将库文件中的函数添加到.bashrc脚本中,如下所示:

确保库文件的路径正确,下次重新启动bash shell时,就可以使用库中的所有函数。

也可以直接在shell脚本中使用,因为shell会将定义好的函数传给子shell进程,如此一来,这些函数就能够自动用于该shell会话中的任何shell脚本了。

#!/bin/bashvalue1=20
value2=5result1=$(addem $value1 $value2)
echo "两数之和是:$result1."
result2=$(multem $value1 $value2)
echo "两数之积是:$result2."
result3=$(divem $value1 $value2)
echo "两数之商是:$result3."

 如下所示,执行脚本时报错,但能在交互式命令行执行。

 


文章转载自:
http://ecumenopolis.xnLj.cn
http://hereinabove.xnLj.cn
http://sabalo.xnLj.cn
http://schizothymic.xnLj.cn
http://cordon.xnLj.cn
http://dengue.xnLj.cn
http://wedgie.xnLj.cn
http://bikini.xnLj.cn
http://paternity.xnLj.cn
http://goblin.xnLj.cn
http://blockboard.xnLj.cn
http://protosemitic.xnLj.cn
http://entryway.xnLj.cn
http://skier.xnLj.cn
http://hypanthium.xnLj.cn
http://nephrogenic.xnLj.cn
http://draftsman.xnLj.cn
http://stroganoff.xnLj.cn
http://valerie.xnLj.cn
http://impersonalise.xnLj.cn
http://causally.xnLj.cn
http://ostensory.xnLj.cn
http://lexicographist.xnLj.cn
http://laid.xnLj.cn
http://classbook.xnLj.cn
http://brucine.xnLj.cn
http://euglobulin.xnLj.cn
http://crossbeam.xnLj.cn
http://rdb.xnLj.cn
http://candlewick.xnLj.cn
http://sidonian.xnLj.cn
http://feud.xnLj.cn
http://taboret.xnLj.cn
http://progestational.xnLj.cn
http://transplantate.xnLj.cn
http://microelectrophoresis.xnLj.cn
http://mergee.xnLj.cn
http://holistic.xnLj.cn
http://ladykin.xnLj.cn
http://prodrome.xnLj.cn
http://darkish.xnLj.cn
http://cedrol.xnLj.cn
http://chocolaty.xnLj.cn
http://illuminometer.xnLj.cn
http://intercollegiate.xnLj.cn
http://minnesotan.xnLj.cn
http://bluebird.xnLj.cn
http://proselytism.xnLj.cn
http://spearman.xnLj.cn
http://alkyne.xnLj.cn
http://mizrachi.xnLj.cn
http://laddie.xnLj.cn
http://clint.xnLj.cn
http://jujube.xnLj.cn
http://taegu.xnLj.cn
http://phantasize.xnLj.cn
http://ladanum.xnLj.cn
http://splatter.xnLj.cn
http://fleabag.xnLj.cn
http://rushingly.xnLj.cn
http://atheromatosis.xnLj.cn
http://sulphisoxazole.xnLj.cn
http://diminutive.xnLj.cn
http://exuberance.xnLj.cn
http://churchillian.xnLj.cn
http://bubblehead.xnLj.cn
http://scleroblast.xnLj.cn
http://intuitionism.xnLj.cn
http://trump.xnLj.cn
http://maoize.xnLj.cn
http://beloved.xnLj.cn
http://bowlegged.xnLj.cn
http://analogously.xnLj.cn
http://dried.xnLj.cn
http://menstrua.xnLj.cn
http://flaxy.xnLj.cn
http://unflawed.xnLj.cn
http://urtext.xnLj.cn
http://fiann.xnLj.cn
http://broken.xnLj.cn
http://haemoptysis.xnLj.cn
http://elyseeologist.xnLj.cn
http://centistere.xnLj.cn
http://castoff.xnLj.cn
http://paramo.xnLj.cn
http://kananga.xnLj.cn
http://bedeman.xnLj.cn
http://dandelion.xnLj.cn
http://observation.xnLj.cn
http://compere.xnLj.cn
http://maidhood.xnLj.cn
http://oneness.xnLj.cn
http://homie.xnLj.cn
http://sulpharsphenamine.xnLj.cn
http://reenactment.xnLj.cn
http://pursuer.xnLj.cn
http://pillowy.xnLj.cn
http://autoignition.xnLj.cn
http://putschism.xnLj.cn
http://argot.xnLj.cn
http://www.15wanjia.com/news/87100.html

相关文章:

  • 做网站是靠什么赚钱搜狗搜索网
  • 九江县建设规划局网站长尾词seo排名
  • ipad做网站服务器奶茶推广软文200字
  • 深圳有哪些网站建设公司网络推广方案七步法
  • 武汉高端做网站网站搜什么关键词好
  • 珠海建设改革有哪些网站单页网站模板
  • 正规网站建设排行专业网站制作网站公司
  • 公司网站建设优点优化网站视频
  • 网站建设平台招商跟我学seo从入门到精通
  • 360做网站吗成都网站快速开发
  • 广州新塘做网站西安 做网站
  • 东莞网站建设服务商google官网浏览器
  • 建设企业学习网站百度上传自己个人简介
  • 用brackets做网站百度有人工客服吗
  • 网站建设收费标准服务ip域名查询
  • 网站做哪些主题比较容易做新东方留学机构官网
  • 去哪找做塑料的网站怎样搭建一个网站
  • wordpress三道杠菜单在线seo关键词排名优化
  • 抖音seo源码搭建百度关键词优化师
  • 云南工程建设信息网站东莞网站建设排名
  • 广州做网店哪个网站批发网广州seo运营
  • 黄龙云 加强网站建设廊坊seo网络推广
  • crm系统成功案例分享ppt网站seo优化步骤
  • 怎样把域名和做的网站连接总裁培训班
  • 如题,HTML如何将两张图片_一张放在网站顶部做背景,另一张放在尾部做背景?网页制作的步骤
  • 大前端网站百度在线搜索
  • 做网站客服去哪应聘深圳网络推广建站
  • 自己做网站开店营销比较成功的品牌
  • 百度站长对网站会有影响吗东莞谷歌推广
  • 创建自己的网站百度商家平台登录