详解Linux中Shell函数 (详解linux中搭建常用服务器)

教程大全 2025-07-08 10:34:54 浏览

shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可,本篇文章重点为大家详细讲解一下Shell函数使用方法。

可以带function关键字使用function fun_name()来定义,也可以直接给出函数名fun_name()定义。不能带任何参数,函数名必须唯一,使时可以传递参数,使用2,…,@来获取参数。建议使用function关键字来定义函数,便于代码阅读。定义格式如下:

(){listofcommands[value]}

#或

(){listofcommands[value]}

函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。

Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。

如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。

(){}res=`funcWorld`

运行结果:

helloworld

要在脚本中调用函数, 只需给出函数名。比如要调用小节“1.Shell函数的定义格式”中的函数funcWorld(), 只需给出函数名funcWorld,函数名无需后跟小括号()。Shell函数的调用方式与Shell命令很相似。

使用?既可以获取上一条命令的退出状态,也可以获取函数的返回值。这里更加可以看出,Shell函数的调用与Shell命令的执行极为相似。

(){varAddRes=`expr+`}add12$?

运行结果:3

Shell函数中定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到Shell结束或被显示删除处为止。函数定义的变量可以使用local关键字显示定义成local的,其作用域局限于函数内,同名local变量会屏蔽global变量。但请注意,函数的参数是local的。

(){localVar=dablelv}

5.Shell函数使用时需要前置申明吗

Shell函数在使用前必须定义,没有申明的说法!一个通常的办法是把函数定义放在脚本开始部分。

详解中Shell函数

像删除变量一样,删除函数也可以使用unset命令,不过要加上-f选项,如下所示:

-ffunction_name

如果想在命令行中使用函数,需要在命令行执行函数的定义。直接在命令行定义Shell函数有个缺点,一旦退出Shell,函数定义将失效。可以将函数定义在Home目录下的.bash_profile文件,或者对所有用户均生效的/etc/profile文件,这样每次登录后,profile文件都会被调用,在命令提示符后面输入函数名字就可以立即调用。

注意:修改文件后要想马上生效需要执行source /etc/profile或者source ~/.bash_profile,不然只能在下次重新登录时才生效。


什么是shell值

shell不是一个程序.他大意是指对系统的操控权,一个操控接口,shell的概念是从Unix继承下来的shell是分等级的,所以就有了提升权限的概念Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。 它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 现在延伸进WINDOWS。

linux的shell编程中#!/bin/sh和$bash是什么意思?

#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 $bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#,bash是shell的一种,是linux下最常用的一种shell,$bash的意思是执行一个子shell,此子shell为bash。

linux下shell如何实现以下功能?

/删除路由# route del –host 192.168.168.110 dev eth0二:在linux下设置永久路由的方法.168.2://,但有时你在删除或一条软路由时会不起作用.在/.16.6.0 netmask 255.255.255.0 gw 172;sysconfig/:添加路由:route add -net 10.0.0.0 netmask 255.0.0.0 dev eth0删除路由.168.254ip route del 172.0/* 删除默认网络172.0 netmask 255;里添加方法.16.2.254 /.16.6.0/24 dev eth0ip route删除的方法;etc/Linux中增加软路由的两种方法第一种:route add -net 172.16.2.254 eth0 */.0 dev eth0添加默认路由:route add default gw 10.0.0.1删除默认路由:route del default gw 10.0.0.1或者route del default---------------------------------------------------------------------------------------linux下添加路由的方法.16.86:一:route del -net 10;/* -net增加网络 -host增加主机 netmask 子网掩码 gw 网关 dev 装置.在/添加到网络的路由# route add –net IP netmask MASK eth0# route add –net IP netmask MASK gw IP# route add –net IP/24 eth1//,设备,这里是你的网卡名*/route del gw 172.0;* 删除默认网关172,会有什么提示:SIOCADDRT: 无法接触网路所以这时用如下的这种方法就可以了第二种.16.2.254 */route del -net 172.110 dev eth0# route add –host 192;etc/:使用 route 命令添加使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法.16.86;添加到主机的路由# route add –host 192.168;24 /.0 */.0;network里添加到末尾方法.119 gw 192.168.168.1//route /* 显示当前路由表 */常用的是这种方式:实现的功能和上面的一样ip route add 172.16.6.0/24 via 172:1.16.2.254 dev eth0ip route del gw 172.16.16.6.0/24 经过172.0;sysconfig/.168;添加默认网关# route add default gw IP/:route add -net 192.168.3.0/24 dev eth0route add -net 192.168.2.0/24 gw 192.168.3.2542:GATEWAY=gw-ip 或者 GATEWAY=gw-dev3./etc/.16.2.254 dev eth0/* 增加一条网络172.0

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐