shell脚本功能的学习之路

电脑杂谈  发布时间:2020-05-27 08:05:26  来源:网络整理

shell脚本 函数_shell脚本_shell脚本解释器

首先查看别名的作用

[root@shellbiancheng ~]# alias httpd='/etc/init.d/httpd'
[root@shellbiancheng ~]# httpd start
正在启动 httpd:   [确定]

该函数的功能是定义同一代码的一部分,该部分在程序中被多次调用,然后为其命名. 重复调用此部分代码只会在需要时调用此名称. 修改重复代码的这一部分时shell脚本 函数,只需修改函数体内的一段代码即可实现所有调用修改.

使用功能的优点:

(1)与功能定义相同的程序段可以减少整个程序的代码量.

(2)提高程序的可读性和可读性.

(3)可以实现程序功能的模块化,并且不同的程序都使用功能模块化.

注意: Linux系统的2000命令可以说是Shell脚本的功能.

简单语法格式(推荐):

函数名(){
指令…
return n
}

shell脚本 函数_shell脚本_shell脚本解释器

规范语法格式:

function 函数名(){
指令…
return n
}

提示: shell的返回值是退出输出的返回值,返回的输出值在函数中返回

通话功能:

(1)直接调用不带括号的函数名称

注意:

a. 调用函数时,不需要在函数后加上括号.

b. 必须在要执行的功能名称的前面定义功能定义和功能主体. Shell的执行是从上到下逐行执行的.

(2)函数的传递参数

函数的pass参数与脚本的pass参数相似,不同之处在于脚本名称可以替换为函数名称.

shell脚本解释器_shell脚本_shell脚本 函数

函数名称参数1参数2

参数说明后跟函数:

a.Shell的位置参数($ 1,$ 2,$ 3,$ 4,$ 5,$#,$ *,$?,$ @)可以是函数参数.

b. 此时,功能参数将临时覆盖或隐藏父脚本的参数.

c. $ 0是特殊的,它也表示父脚本的名称.

d. 功能完成后,可以还原原始命令行脚本的参数.

e. 在shell函数中,return命令函数类似于shell中的出口,该函数是跳出该函数.

The

f.return语句将向调用程序返回退出值(返回值).

g函数的参数变量在函数主体中定义. 如果是普通变量,则通常使用local. 例如,要定义a,请使用局部a对其进行定义.

shell脚本解释器_shell脚本_shell脚本 函数

示例1: 开发一个脚本来创建两个简单的函数,然后调用并执行

[root@shellbiancheng jiaobenlianxi]# cat hanshu01.sh 
#/bin/bash
nishishei(){
    echo "who are you?"
}
function linzhongniao(){
    echo "I am linzhongniao"
}
nishishei
linzhongniao

执行

[root@shellbiancheng jiaobenlianxi]# sh hanshu01.sh 
who are you?
I am linzhongniao

如果必须在开发的每个脚本中调用我们调用的函数,则可以在/etc/init.d/functions中编写该函数. 在这里,为了使查看源代码执行的脚本更容易,您还可以使用点“.

[root@shellbiancheng jiaobenlianxi]# tail -5 /etc/init.d/functions 
}
linzhongniao(){
    echo "I am linzhongniao"
}
[root@shellbiancheng jiaobenlianxi]# cat hanshu02.sh 
#/bin/bash
source /etc/init.d/functions
nishishei(){
    echo "who are you?"
}
nishishei
linzhongniao
[root@shellbiancheng jiaobenlianxi]# sh hanshu02.sh 
who are you?
I am linzhongniao

示例2: 将函数传递参数转换为脚本传递参数命令行参数,以判断指定的URL是否正常. 当然shell脚本 函数,您也可以判断服务. 例如,mysql,httpd和其他方法与此类似,此处未提及. 先前的分支和循环结构有一个判断服务示例.

分步回答:

a. 传递脚本参数以检查网址是否正常.

b. 检查功能是作为函数编写的.

shell脚本_shell脚本解释器_shell脚本 函数

c. 将功能参数传递转换为脚本命令行参数传递,以判断指定的URL是否异常.

[root@shellbiancheng jiaobenlianxi]# cat check_url.sh 
#!/bin/bash
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions
usage(){   #usage给用户一个提示
    echo $"Usage: $0 url" 
    exit 1
}
RETVAL=0
CheckUrl(){
    wget -T 10 --spider -t 2 $1 &>/dev/null
    jieguo=$?
    if [ $jieguo -eq 0 ];then
        action "$1 url" /bin/true
    else
        action "$1 url" /bin/false
    fi  
    return $RETVAL
}
main(){
    if [ $# -ne 1 ];then  判断参数输入参数的个数,如果不等于1执行usage函数
    usage
    fi
    CheckUrl $1
    jieguo=$?
    Return $jieguo
}
main $*    $*这里的作用是不管敲多少个参数都当成一个,防止乱输入别的东西

执行结果:

[root@shellbiancheng jiaobenlianxi]# sh check_url.sh www.baidu.com
www.baidu.com url  [确定]
[root@shellbiancheng jiaobenlianxi]# sh check_url.sh www.sss.com
www.sss.com url[失败]

示例3: 参数传递示例,为字符串添加颜色

使用if方法为字符串添加颜色. 输出颜色必须为echo-e以逃避反斜杠. SHAN ='\ E [31; 5m'和RES ='\ E [0m“高亮显示内容.

[root@shellbiancheng jiaobenlianxi]# cat color.sh 
#!/bin/bash
RED_COLOR='\E[1;31m'
GREEN_COLOR='\E[1;32m'
YELLOW_COLOR='\E[1;33m'
BLUE_COLOR='\E[1;34m'
PINK='\E[1;35m'
SHAN='\E[31;5m' #提示闪烁,配合echo –e 使用
RES='\E[0m'
usage(){
    echo -e  ${SHAN} "Usage: $0{red|green|yellow|pink}" contents ${RES}
    exit 1  
}
color(){
if [ "$1" = "red" ];then
    echo -e "${RED_COLOR} $2 $RES"
elif [ "$1" = "green" ];then
    echo -e "${GREEN_COLOR} $2 $RES"
elif [ "$1" = "yellow" ];then
    echo -e "${YELLOW_COLOR} $2 $RES"
elif [ "$1" = "blue" ];then
    echo -e "${BLUE_COLOR} $2 $RES"
else
    usage
fi
}
main(){
    if [ $# -ne 2 ];then
    usage
    fi
    color $1 $2
}
main $*

[root@shellbiancheng jiaobenlianxi]# cat color1.sh 
#!/bin/bash
echo -e "\033[30m 黑色字 I am linzhongniao \033[0m"
echo -e "\033[31m 红色字 I am linzhongniao \033[0m"
echo -e "\033[32m 绿色字 I am linzhongniao \033[0m"
echo -e "\033[33m 黄颜色字 I am linzhongniao \033[0m"
echo -e "\033[34m 蓝色字 I am linzhongniao \033[0m"
echo -e "\033[35m 紫色字 I am linzhongniao \033[0m"
echo -e "\033[36m 天蓝字 I am linzhongniao \033[0m"
echo -e "\033[37m 白色字 I am linzhongniao \033[0m"

执行结果

shell脚本编程学习之路-函数

[root@shellbiancheng jiaobenlianxi]# cat beijingcolor.sh 
#!/bin/bash
echo -e "\033[40;37m 黑底白字 I am linzhongniao \033[0m"
echo -e "\033[41;37m 红底白字 I am linzhongniao \033[0m"
echo -e "\033[42;37m 绿底白字 I am linzhongniao \033[0m"
echo -e "\033[43;37m 黄底白字 I am linzhongniao \033[0m"
echo -e "\033[44;37m 蓝底白字 I am linzhongniao \033[0m"
echo -e "\033[45;37m 紫底白字 I am linzhongniao \033[0m"
echo -e "\033[46;37m 天蓝白字 I am linzhongniao \033[0m"
echo -e "\033[47;30m 白底黑字 I am linzhongniao \033[0m"

执行结果:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-223798-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张菲
        张菲

        到明年就11元多一斤也就是说今年存10元到明年10

      • 解媛
        解媛

        其它先不说

      • 丁瑞华
        丁瑞华

        还有斗地主

      热点图片
      拼命载入中...