linux常用shell脚本_linux shell命令

linux常用shell脚本_linux shell命令代码重用的时候,通过函数非常方便。

linux常用shell脚本_linux shell命令


代码重用的时候,通过函数非常方便。在函数代码块中实现逻辑,在需要使用的时候调用该函数,建立脚本:

#/bin/bash
function echo1 {
    echo "This is function 1"
}

echo2() {
    echo "This is function 2"
}

echo1
echo2

运行后输出:

This is function 1
This is function 2
1
2

shell中的函数必须先定义后使用,否则就会报错。同时函数名也必须是唯一的,如果定义了两个相同名字的函数,后面的会覆盖前面的。

注意函数体的左花括号{和后面的命令之间必须有空格或换行,如果将最后一条命令和右花括号}写在同一行,命令末尾必须有;号。

linux常用shell脚本_linux shell命令


之前我们在使用脚本的时候也给脚本传参过,向函数传递参数以及函数中处理参数的过程跟这个相同。比如用
$#表示参数的总个数,用$1表示第一个参数等等。

1 传递普通变量

向函数传递普通变量的时候只要在调用的时候把参数写在后面即可,举例如下:

#/bin/bash
function process_param {
    if [ $# -eq 0 ] || [ $# -gt 2 ];then
        echo "-1"
    elif [ $# -eq 1 ];then
        echo $[ $1 * 10 ]
    else
        echo $[ $1 + $2 ]
    fi
}

value=$(process_param)
echo "value of process_param is $value"

value=$(process_param 1)
echo "value of process_param 1 is $value"

value=$(process_param 1 2)
echo "value of process_param 1 2 is $value"

运行后结果为:

value of process_param is -1
value of process_param 1 is 10
value of process_param 1 2 is 3

2传递数组

向函数传递数组的时候,如果以变量名的形式传参,函数内部将只能拿到数组的第一个元素。举例如下

#/bin/bash
function show_array {
   echo "num is array is $@"
   array=$1
   echo "array is ${array[*]}"
}

array_source=(1 2 3)
echo "array_source is ${array_source[*]}"
show_array $array_source 

运行后结果为:

array_source is 1 2 3
num is array is 1
array is 1

如果想要传递整个数组的话,在函数调用处函数内部都要使用echo语句,举例如下:

#/bin/bash
function show_array {
    array=($(echo "$@"))
    for value in ${array[*]}
    do
        echo "value is $value"
    done
}

test_array=(1 2 3)
echo "array_source is ${test_array[*]}"
show_array $(echo ${test_array[*]}) 

运行后结果如下:

array_source is 1 2 3
value is 1
value is 2
value is 3

通过echo语句可以传递整个数组了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12023.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注