嗨,我是SHELL腳本中的新成員。其實我在文件中有一個功能err()
abc
文件不與.sh
擴展他們是簡單的文件,但與#!/bin/bash
導入shell腳本函數
err() {
echo "${1}" >&2
}
現在我將其導入不同的文件xyz
source abc
someFunction(){
err "Failed to back up"
}
是否開始一個正確的導入方式?
嗨,我是SHELL腳本中的新成員。其實我在文件中有一個功能err()
abc
文件不與.sh
擴展他們是簡單的文件,但與#!/bin/bash
導入shell腳本函數
err() {
echo "${1}" >&2
}
現在我將其導入不同的文件xyz
source abc
someFunction(){
err "Failed to back up"
}
是否開始一個正確的導入方式?
是的,你可以像你所提到的上述或類似:. FILENAME
文件不必與.sh
這很好,這裏有一些更多的提示來結束:
使用函數的命名約定,例如在函數名稱前加上f_
,例如f_err
。函數調用與其他命令沒有區別,這是給讀者的一個提示。它也減少了名稱衝突的可能性。
您只需要閱讀權限,並且您不需要#!/bin/bash
(它只是一條評論)。
在Bash中,一些選項必須在函數解析之前設置。例如,shopt -s extglob
必須在函數之前和之外完成,如果它使用擴展通配符。把它放在功能裏面已經太晚了。
Bash不支持FPATH環境變量或自動加載(如Korn shell所做的那樣)。
您需要出口新創建的功能
在abc
末補充一點:
export -f err
你只需要導出功能,使其在一個子shell可用的(一個啓動通過運行另一個bash實例)。源文件後,其中定義的任何功能將在當前shell中可用。 – chepner