Bash编程-第3部分

安全 我们的 概念 我们将学习2个非常有用的编程工具,这些工具可以在Bash中完美运行。 学习创造 功能 并定义 管道 乍一看可能很复杂,但随后我们将看到 效用 他们提供给我们。

管子

具体来说,流水线是一种方法,它无需花费太多时间即可将一个过程的输出定向为另一个过程的输入,这具有一系列优点,例如减少代码行,省去结果存储变量并改进脚本的效率。

通常使用符号|来识别管道。 允许连接表达式; 尽管默认情况下使用它,但是还有其他创建管道的方法。

示例:打印最近的内核消息

#dmesg允许您查看最新的内核消息和已加载的驱动程序。 tail打印文件或#command的最后部分

dmesg | 尾巴

尽管它们可能会像我们想要的那样复杂,但是管道的基本结构允许将一个命令的结果用作下一个命令的输入,如果我们不断添加连续的管道,则可以提供新命令的输入。

功能

函数是一组组合在一起的语句,因此它们可以执行多次而不必重写它们。 这等效于认为,当我们学会烹饪某种食物时,我们会将其食谱写在一张纸上,并且每次我们要烹饪这种食物时,我们都会参考该食谱,而不是用相同的食谱重写一张新纸。

关于函数的最重要的事情也许是传递参数,它们将用于处理它们并生成输出的数据的可能性。 其结构如下:

函数function-name {

流程

}

示例:显示可在tcp协议上运行的服务的函数。 我们还可以看到如何应用更多管道。

#我们定义了一个函数名,它可以是我们喜欢的一个。

函数services_tcp {

#cat连接并显示/ etc / services文件夹的内容,该文件夹是#,其中包含所有服务及其关联的端口。

#第一个grep获取列表并删除注释,使用–v,我们将结果取反

#第二个grep仅显示与tcp相关的那些

猫/等/服务| grep –v“ ^#” | grep tcp

}

当我们需要执行此功能时,我们只需按其名称进行调用:

tcp_services

在这种情况下,它无需参数即可工作; 如果有它们,我们必须添加它们,以使该功能正常运行,否则该功能将无法正常运行。 使用return允许函数作为过程的结果返回一个值。

示例:带输入参数的函数可计算2个数字的总和。

#!/斌/庆典
函数sum()
{
#with让我们可以在引号内执行操作
让“结果= $ 1 + $ 2”

#return允许返回整数值。 一旦执行返回,该值将被存储在变量$?中。
返回$结果;
}
 
#sum函数被调用,我们传递2个输入参数。

加2 3

#打印$的值? 用echo评估引号中变量的实际值
echo -e“结果= $?”;

<<转到上一部分

谢谢Juan Carlos Ortiz!


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   指甲指针

    我不确定,但是函数的return语句仅用于返回0到255之间的整数,例如错误代码“ exit”,如果一切正常,则返回0,其他情况下返回另一个数字。 尽管此方法在示例中可行,但我认为将结果与return一起返回并不是一种好习惯。
    我在那边胡说八道! 眼! 哈!

  2.   Juank

    真相使我充满怀疑。 在任何情况下,为避免函数出现问题,在函数试图返回或打印值或字符串的情况下,我们可以用echo代替return。

  3.   亚伯·S·比格山

    的确,可以使用bc命令解决此问题,在sum函数中可以使用:result =`echo $ 1 + $ 2 | bc -ql`

  4.   路易斯·米格尔

    好,

    我想知道在哪里可以保存bash文件以在整个系统范围内运行,它不是bin目录,但可以作为备份目录。

    谢谢并恭祝安康。

  5.   华金

    非常感谢,我从脚本开始,事实是这非常有用,您非常乐于分享您的知识!
    问候

    1.    让我们使用linux

      谢谢! 拥抱!
      保罗

  6.   CRISTHIAN

    语法错误:“(”意外
    尝试运行该示例时出现错误,我完全复制了该示例

    可以是什么? 我在Ubuntu 14.10上