linux中shell腳本引用另一shell腳本


 

調用有三種方法:

1、fork:不同的shell,調用后返回父shell,子shell從父shell中繼承變量,但子shell的變量不會帶回父shell,直接用path/to/file.sh調用;

2、exec:同一個shell,調用后不返回,用exec path/to/file.sh調用;

3、source:同一個shell,調用后返回,用source path/to/file.sh調用。

第一個腳本quote1.sh,代碼如下:

復制代碼
 1 #!/bin/bash
 2 #
 3 A=1
 4 echo "ID1=$$"
 5 export A
 6 echo -e "A1=$A\n"
 7 case $1 in
 8         --exec)
 9                 echo "use exec"
10                 exec ./quote2.sh;;
11         --source)
12                 echo "use source"
13                 source ./quote2.sh;;
14         *)
15                 echo "use fork"
16                 ./quote2.sh;;
17 esac
18 echo -e "\nID1=$$"
19 echo "A1=$A"
復制代碼

第二個腳本quote2.sh,代碼如下:

復制代碼
1 #!/bin/bash
2 #
3 echo "A1=$A"
4 A=2
5 echo "ID2=$$"
6 export A
7 echo "A2=$A"
復制代碼

# chmod +x quote*  //添加權限

# cd /root/test/script/  //進入文件所在目錄

1、選擇fork方法

# ./quote1.sh  //無參數執行腳本1

 兩個腳本的進程ID號不同,所以在不同的shell下執行的,但調用完quote2.sh會返回繼續執行。

2、選擇exec方法

# ./quote1.sh --exec  //觀察exec執行結果

兩個進程ID號相同,所以是在同一shell下執行,但調用完quote2.sh就會結束。

3、選擇source方法

# ./quote.sh --source  //觀察source執行結果

兩個進程ID號相同,所以是在同一shell下執行,但調用完quote2.sh會返回繼續執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM