外部調用shell腳本內函數
Ⅰ shell腳本調用外部腳本的問題
估計是因為腳本1中使用了cd命令改變了當前路徑,腳本2中繼承了腳本1中的當前路徑;而一旦腳本1結束回到主shell,這個當前路徑也就不復存在。
如果在腳本2基於這個當前路徑啟動jar包前,腳本1結束了,那麼當前路徑肯定回到了主shell的設置去了,jar包就啟動不了了。
任何外部調用的shell命令執行都會產生一個進程,都會有一個pid,即使最終執行是返回錯誤。
所以,兩點建議:
1)腳本1調用2的命令行後加上 &,置入後台運行,這樣就不會因為腳本1的結束而影響腳本2的運行。
2)腳本中盡量不要用cd命令跳轉目錄,盡量使用絕對路徑。
Ⅱ 如何在shell中實現函數文件import,詳情入內
用自動導入函數的方法,可以在命令行下像執行命令一樣快捷,而且速度快,佔用資源少.
1,建立自己的函數庫
mkdir functionlib
然後將常用的腳本改成函數的語法,如:
function filename { command ; }
將filename拷貝到functionlib中,
2,修改環境文件,在/etc/profile中添加
export FPATH=$HOME/functionlib
3,重登錄一下
這樣的話,你就可以隨時用像ls那樣運行你自己的filename"命令"
而不需要用什麼dot,sh,來運行你的函數/腳本啦~~
如果在腳本中運行,可以在腳本頂部用
#!/bin/sh
##
autoload filename //來自動導入函數.
...
filename //調用函數
Ⅲ linux shell腳本:while循環中調用另一個腳本遇到exit為什麼會跳出循環,且繼續執行循環後的程序
exit是在被調用的腳本裡面,肯定會退出被調用的腳本了。如果不想繼續執行while循環後面的程序可以在do後面的條件上加上break
Ⅳ 如何復用外部shell腳本
在Linux開發中,常常需要編寫獨立的shell腳本執行特定任務。隨著任務增多,重復部分逐漸顯現,這時可以將公共功能提取到一個通用腳本中,以便其他腳本復用。本文將詳解如何在shell腳本中執行外部腳本、調用外部腳本的函數,並探討腳本復用的幾種方法。
首先,通過source命令或直接使用點號加腳本名的方式在另一個腳本(如b.sh)中調用外部腳本(如a.sh)。source會先執行a.sh,然後執行b.sh,而點號方式則直接執行,結果類似。sh外部腳本與前兩者在執行順序上有所不同,因為它在兩個獨立進程中運行。
接著,我們區分了source和點號調用的相同點,它們都讓外部腳本的全局變數和函數在當前腳本中生效。然而,sh方式由於在不同進程運行,無法直接使用外部腳本的函數和變數。
解決這一問題的方法包括使用case關鍵字匹配調用不同的函數,或者在外部腳本末尾添加參數判斷和參數傳遞的邏輯。前者需要添加分支對應每個新函數,後者則提供了一種通用的調用模板,但可能導致函數名變更時的維護問題。
總的來說,腳本復用提高了代碼的可維護性和可復用性,但需要注意不同調用方式的優缺點。在實際應用中,根據具體需求選擇合適的復用策略是很重要的。