bash shell函数的定义及变量的简单说明

From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html

函数:

“函数是一种脚本内脚本”,程序员很难想像没有函数的日子,至少我会比较痛恨。

所以了解函数的定义也就是学习bash的一大要点了。

函数大大增强了shell的编程能力,主要原因有如下两点:

  1. 当你调用一个函数时,它已经在shell的内存中;因此函数运行的很快。
  2. 将较长的shell脚本组织成各种容易开发和维护的模块是理想的。


呃,针对第一点,现在计算机的内存那是相当的便宜,大家不用再担心钱了吧?

来个4G的条子,当然用XP你就用3.5G吧,除非你扩展一下。。

定义一个函数,就是令shell在内存中保存其名字和定义(也就是其包含的shell命令)。如果你要在以后运行函数,只须鍵入其名字,后跟任意参数即可,就好像它是一个shell脚本

要定义一个函数有两种格式

function functname
{
      shellcommands
}

functname()
{
     shellcommands
}

这俩方法,其实是一样的,没啥本质及功能上的区别。

使用unset -f functname删除一个函数定义。

unset -ffunctname

可以使用如下命令来查找到登录会话里定义的函数

declare -f

嘿嘿,咋样?是不是显示的内容太长?嗯。用管道命令more来输出吧

declare -f|more

如果只想看函数名的话就用

declare -F

除了优势,函数和脚本有两个重要差别

  1. 当通过名字调用时,函数不在单独进程里运行,而脚本却可以。运行一个函数的语义更类似于登录时.bash_profile中的命令或用source命令调用脚本时的情况。
  2. 如果一个函数与一个脚本或可执行程序(也有可能是脚本啊)有相同的名字,则函数优先。

看出来了吧?“函数优先”,为啥呢?这里说一下在shell中鍵入一个命令时,各种资源的优先级次序:

  1. 别名
  2. 关鍵字,例如function,以及if和for等
  3. 函数
  4. 内置命令,如cd和type等
  5. 脚本和可执行程序(在最后哦),shell按在PATH环境变量中列出的目录中对其进行搜索

不过,呃,这个顺序是可以改变的哈。可以使用内置的command builtin和enable改变优先级次序。

它允许你将函数、别名和脚本文件定义为同样的名字,并选择要执行的一个。

变量:
呼,终于说到变量了。。嗯。没事这个短。。

简单地说:变量被命名用以存储数据,通常格式为字符串,其值可使用$符号加名字获得。某些变量称为环境变量,按惯例以大写字母命名,其取值对子进行已知(使用export语句)

呵,就这些。嘿嘿。。因为后面的内容不能放在这一节里了。太长了,呼呼。。

相关文章
  • shell vsunix( 9)之前已经写过几节关于shell的笔记了,可是却一直没有介绍一下,到底什么是shell。呃,经过b...
  • bashshell脚本的运行方式( 9 )以下内容部分直接摘录自《学习bash》,这又是我一个新的读书笔记。希望能给大家带来帮助。...
  • shell变量语法详解--两种声明变量方式,及大括号的作用( 4)貌似之前写技术类博客的做法不是很正确,嗯,一写就一大长篇,就算真正有需要的人看也会烦...
  • shell对$@和$*进行引用( 2 )嘿,每次看到“$”符号我都会两眼冒光,呵,没办法,在这鄙视“资本主义”社会呢。嗯。哈...
  • shell命令替换之前介绍过shell有两种方式可以取得变量的值:通过赋值语句,或者是以命令参数传递给脚本。...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脚本中判断Shell命令执行结果

与C程序中判断同理,只是语法差异,提一点,在这里尤其需要注意 Shell 的语法规则:-D。 Code: #!bin/shifconfig if [ $? -eq 0 ]; thenecho "succeed!" elseecho "failed!" fi

el-table点击某行高亮;el-table设置hover效果;监听el-table点击某行变色;去除el-table的hover效果;监听el-table的hover事件

以下代码可直接复制使用 无需任何修改 注意:如果最后的的css不生效,就单独的放在一个style标签内 重点解释: :row-class-name"tableRowClassName" //这个是设置返回某行的类名 :stripe"false" …

centos 查看版本

From: http://www.cnblogs.com/hitwtx/archive/2012/02/13/2349742.html 有以下命令可以查看: # lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Distributor ID: CentOS Description: CentOS release …

SQL Server replication requires the actual server name to make a connection to the server.错误解决...

今天,在作数据发库时,出现如下错误: "SQL Server replication requires the actual server name to make a connection to the server. Connections through a server alias, IP address, or any other alternate name are not supporte…

el-table使用fixed后,最后一行显示不全;el-table设置fixed后,最后一行被遮挡。

解决代码: .el-table {/deep/ .el-table__body-wrapper {overflow-x: scroll !important;//直接设置横轴内容滚动条 即可撑高高度 还不影响使用} }一、情景:给element的el-table设置fixed固定后,最后一行显示部分被遮挡。有的说是有时出现这…

OpenWrt

Contents 1 The Router 1.1 Getting started  1.1.1 Installation  1.1.2 Initial configuration  1.1.3 Failsafe mode 1.2 Configuring OpenWrt  1.2.1 Network  1.2.2 Wireless 1.3 Advanced configuration  1.3.1 Hotplug  1.3.2 Init scripts  1.3.3 …

bash shell函数中返回任意值的四种方法

From: http://www.jbxue.com/article/11322.html 本文介绍下,在bash shell编程中,从函数中返回任意值的几种方法,有需要的朋友参考下。在bash中,函数更像一个子程序,即其返回值,只能是一个数字&#xff0c…

Linux:ps命令以及进程状态详解

Linux 查看进程PS命令详细介绍 1.ps简介 ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地. 2. ps命令及其…

修改el-table滚动条样式

.el-table {// 滚动条的宽度/deep/ .el-table__body-wrapper::-webkit-scrollbar {width: 10px; // 横向滚动条height: 10px; // 纵向滚动条 必写}// 滚动条的滑块/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {background-color: #1fff;//颜色border-radius: 5px…

NQueens, NQueens2 N皇后问题,递归回溯

N皇后的规则:任意两个皇后不在同一行,不在同一列,不在同一斜线上。 算法分析:这种问题就用回溯法。深度搜索然后回溯。用一个数组记录每一行皇后的位置,下标代表行,值代表列。对行深度搜索。 public class …

Mac OS 如何更改文件的默认打开方式

From: http://www.ipc.me/os-x-xiao-ji-qiao.html 和使用 Windows PC 一样,人们在 Mac 电脑中往往也需要用多种应用开启同一种文件。并且,由于环境、习惯以及个人喜好不同,用户常常会希望更改某种文件的默认打开方式…… 在 OS X 系统下&a…

VMware “Transport(VMDB)error -44:Message”

这种情况说明虚拟机的一个服务没有开启,在本机中找到服务: 1. “打开运行”-“services.msc”回车。 2. 找到VMware Authorization Service这个服务,启动起来就OK了。

linux-shell面试题 之二

标签:面试题 shell 正则表达式 开发 sed 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://president.blog.51cto.com/4990508/854249由于工作的关系,收集了很多的s…

python基础学习1-列表使用

python 列表相关操作方法namelist [a,b,c,d,1,2,3,4]namelist1 [a,b,c,d,1,2,3,4]print(namelist)print(namelist[1])#取得第2个print(namelist[-1])#取得最后一个 索引从最后开始 -1,-2,-3print(namelist[0:3]) #取得列表范围 0到2 3个值 不包含 3序列上的值print(namelis…

mac下卸载jdk1.7

From: http://blog.sina.com.cn/s/blog_6940cab30102vbtp.html 目前mac上有一些软件还不支持jdk1.7,只能卸载1.7,恢复到1.6,下面二个链接是官网给出的卸载方法: http://www.java.com/zh_CN/download/help/mac_uninstall_java.xml http://docs.oracle.com/javase/7/docs/webnot…

VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”

这种情况说明CPU没有开启虚拟化,需要进入主板BIOS界面进行设置,设置选项位置因主板而异,可能在 Security/Advanced/Configuration 选项下,以 Intel 为例,找到 Intel Virtual Technology / Intel HT Technology 选项&am…

el-table列宽自适应;el-table表格的列根据内容自动撑满;el-table内容换行问题;

原文链接 重点就一个方法 :width"flexColumnWidth(‘date’,tableData)" 第一个参数是这个列的字段 第二个参数是这个表格的数据 只需要给对应的列 el-table-column 标签加上此方法 即可做到此列自适应 其他的列想要自适应宽度 同样使用 :width 方法即可 此段代码可…

Android初级教程:Android中解析方式之pull解析

在安卓中有很多种解析方式。按照大方向有xml解析和json解析。而,细致的分,xml和json解析各有自己的很多解析方式。今天这一篇主要介绍xml解析中的pull解析。对于xml的解析方式,我之前在javaweb一些知识中有写过dom和dom4j等等解析方式。有兴趣…

linux系统下PHP无法调用oracle数据库的解决方法

我们有项目php调用oracle 在正线上环境不能运行成功。经调试通过使用如下方式: $param 00000999;$en cn;passthru("/usr/local/php/bin/php /home/wwwroot/pernodricard/api/test.php $param $en"); 以脚本形式可以运行成功。 怀疑是环境变量的问题&…

vi 多窗口同步滚动--适用于人工文件比较

vi本身带有文件比较功能,这个就不多说了,有时我们需要同时查看两个非常类似的文件,但是却有少许区别的地方,当然用专业的文件比较工具自然是非常方便的。 这里我只想提一下,vi实现多窗口同步滚动的方法, 先用vi打开两个…