【shell】变量与函数库文件

160 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

变量

脚本变量

作用域

  • 全局:(继承到子进程,在当前进程和子进程都可以使用)

        设置为全局变量:export 变量名
    
  • 局部:(只能在当前进程中使用)

函数变量

作用域

  • 全局:函数内定义的变量可以在另外函数内部使用,也可以在函数外使用

      不同函数之间可以互相调用变量,脚本内的任意位置可以调用
    
  • 局部:local 变量名 ,确保变量仅在函数内部使用

【demo】:

#测试函数变量的作用域
fun1.sh
fun1()
{
    a_1=1 #可以在脚本内的任意位置使用
    echo "fun1函数内a_1:${a_1}"    
}
fun2()
{
    local b_2=2 #只能在本函数内部使用
    echo "fun2函数内b_2:${b_2}"   
}
test_fun()
{
    echo "测试函数内a_1:${a_1}"
    echo "测试函数内b_2:${b_2}"
}

fun1
fun2
test_fun
echo "函数外a_1:$a_1"
echo "函数外b_2:$b_2"
[root@localhost test]# bash fun1.sh 
fun1函数内a_1:1
fun2函数内b_2:2
测试函数内a_1:1
测试函数内b_2:
函数外a_1:1
函数外b_2:

函数库文件

1、在库文件中只定义,不调用,可以定义变量函数;

2、在其他需要用到这些变量或者函数的脚本中调用;

3、使用相对路径来使用库文件(容易移植);

4、如果多个脚本需要调用重复的函数,没必要在每个脚本中定义,只需要创建函数库文件,将需要的函数都放到这个库文件;

5、每个脚本只需要一条语句调用库文件即可(. 库文件脚本名);

注意:不能把库文件当做普通脚本一样在脚本中运行,那样那些函数将不会出现在脚本中