当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可以调用别的脚本,但是速度

 别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可以调用别的脚本,但是速度会比较慢。所以函数是必不可少并且非常重要的一个东西。

定义函数的格式

function_name(){...}

例子:

//~ fun_s

show(){

echo "show $*"

}

echo $*

echo "after function"

show c d

echo $*

exit 0

/////////////////////////////

$./fun_s a b

结果是

a b

after function

c d

a b

从上面的例子可以看出,当脚本调用函数的时候,脚本程序的位置参数会被替换成函数的位置参数,并且函数调用结束后还原。

return:

//~ return_s

#!/bin/bash

first(){

echo "is return"

}

second(){

echo "before return"

return "0"

echo "after return"

}

return_value="$(first)"

echo $return_value

second&echo "return 0"  echo "return other"

exit 0

//////////////////////////////////////

输出

is return

before return

return 0

该例子说明可以捕获函数内echo的字符串,如echo $(first) , 函数在return后不会再执行下面的语句。

second&echo "return 0"  echo "return other" 该句的输出为 return 0。这里有人可能会和C语言混淆,因为在C语言里0表示的是false。而这里的0表示函数执行成功,可以理解为true,所以会输出return 0。

命令

break,continue 和c语言基本类似

echo 了解一点即可echo -n 输出没有换行。

eval:

例子:

//~ eval_s

#!/bin/bash

var1=abcd

var2=var1

eval var3=\$$var2

echo $var3

exit 0

///////////////////////////

eval相当于一个额外的$,它给出一个变量值的值,如例子里先是$var2使var3变成\$var1,又var1=abcd,所以var3变为abcd,连续解析了两次变量。

export:

看下面两个例子可以很好的说明export的作用。

//~ export1_s

#!/bin/bash

var1="this is var1"

var2="this is var2"

export var2

./export2_s

exit 0

///////////////////////////

//~ export2_s

#!/bin/bash

echo "$var1"

echo "$var2"

exit 0

/////////////////////////

输出:

this is var2

输出结果说明var1为空而var2却有值,这正是export起的作用,把var2变成了一个环境变量。

再看个例子:

#!/bin/bash

echo $var1

echo $var2

echo $var3

exit 0

//////////////////////////

//~ set-a_s

#!/bin/bash

set -a

var1="var1"

var2="var2"

var3="var3"

./set-a2_s

exit 0

//////////////////////////

//~ set-a2_s

输出:

var1

var2

var3

set -a的作用就是把它之后声明的所有变量都export

printf:

和C语言里的printf用法很相似的一个命令,使用非常方便。

set:

//~ set_s

#!/bin/bash

fun1()

{

echo "a b c d"

}

set $(fun1)

echo $1

echo $(date)

set $(date)

echo $1

exit 0

///////////////////////

输出: a 2008年 03月 06日 星期四 03:57:55 CST 2008年

date的输出是几个由空格分隔的值,set的作用能分隔出每个域。

shift:

就是让$2变$1,$3变$2,依此类推。

trap:

非常有用的一个命令,用于指定接受到信号后进行的动作,系统定义了非常多的信号类型,用trap -l命令可以查看所有的信号。

常见的几个信号有:

INT(2) 中断,按下ctrl+c组合键引发的

QUIT(3) 退出,按下ctrl+\引发

例子:

//~ trap_s

#!/bin/bash

trap var=2 INT

echo "please enter ctrl+c"

var=1

while [ $var = 1 ]

do

echo "in while"

sleep 1

done

exit 0

/////////////////////////

这个例子在我按下ctrl+c后改变了var的值,所以跳出循环,程序结束。

shell下的程序设计非常强大,你可以用它做出很多小工具,让你的使用linux系统更加流畅。shell还有非常多的功能文中没有提到,需要大家发现问题后再自己去解决。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

香港2023年2月20日 /美通社/ -- 近期,EcHouse宣布其年营业额突破五亿。EcHouse是一家香港装修平台,旨在解决市场上装修行业质素良莠不齐的问题。作为全港少有凭借VR睇装修+AI装修自动配对技术的公司,...

关键字: ECHO HOUSE 数据库 数字化

纽约2022年9月30日 /美通社/ -- 当地时间9月12日,海投全球创始人兼CEO Jerry王金龙受邀出席了在纽约举行的全球私募股权盛会SuperReturn,并在"私募信贷"板块中发表了名为&...

关键字: RETURN SUPER CE 创始人

德国斯图加特和中国北京2022年6月29日 /美通社/ -- 工业物联网时序数据库管理系统及相关服务的提供商天谋科技(Timecho) 今天宣布完成近亿元人民币天使轮融资。本轮融资由红杉中国领投,考拉基金、戈壁创投、云智...

关键字: ECHO 数据库 工业物联网 IoT

来自:知乎,作者:Name1e5s链接:https://zhuanlan.zhihu.com/p/40490357故事要从前两天交流群中一位同学提到的这个问题开始这个问题看起来十分刁钻,不过稍有常识的人都知道,制定C标准...

关键字: POINTER RETURN SPACE SYSTEMS

【导读】:树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。在面试环节中,二叉树也是必考的模块。本文主要讲二叉树操作的相关知识,梳理面试常考的内容。请大家跟随小编一起来复习吧。本文针对面试中常见的二叉树操作做个总结...

关键字: C代码 ORDER WHILE RETURN

女儿过生日时,朋友送给司兰一台智能音箱,是市场上常见的主流品牌的款式,小方盒子、价格不高。司兰对新奇事物的兴趣一般,就随手摆放在了客厅,倒是6岁的女儿爱上了这个小音箱,总是缠着它讲故事。

关键字: 智能音箱 亚马逊 ECHO 黑客

很多客户网站服务器被入侵,被攻击,找到我们SINE安全公司寻求技术支持与帮助,有些网站被篡改,被跳转,首页内容被替换,服务器植入木马后门,服务器卡顿,服务器异常网络连接,有的客户使用的是阿里云服

关键字: Linux LINUX系统 IP PID

市场咨询公司eMarketer的报告显示,亚马逊在语音控制市场占据统治地位,即亚马逊凭借Echo智能音箱占据美国语音智能音响用户约70.6%的份额,远远领先于谷歌,谷歌只占了23.8%,其它企业

关键字: 亚马逊 触摸屏 ECHO ALEXA

智能音箱,作为一个音箱升级的产物,是家庭消费者用语音进行上网的一个工具,比如最基础的点播歌曲、上网购物。同时,它也可以对智能家居设备惊醒一个联动控制,比如什么打开空调、打开电视、设置冰箱温度等等

关键字: 智能音箱 ECHO 智能设备 APP

工业主机,也称为工业控制式主要机器,是工业控制计算机的简称。也是我们常常听别人说的工业电脑,工控电脑等。工业主机的硬件组成有哪一些?工业主机拥有计算机的基本特征,其组成是由工业主板,中央处理器,

关键字: LINUX系统 硬件 WINDOWS系统 进程
关闭
关闭