23

err()fileに関数がありますabc.shファイルには拡張子がありませんが、#!/bin/bash.

err () {
    echo "${1}" >&2 
}

今、私はそれを別のファイルにインポートしていますxyz:

source abc
someFunction(){ 
    err "Failed to back up"
}

これは正しい輸入方法ですか?

4

3 に答える 3

25

はい、上記のように、または次のようにすることができます。. FILENAME

ファイルは次で終わる必要はありません.sh

于 2012-12-11T05:29:29.573 に答える
4

それはいいです、ここにいくつかのヒントがあります:

  1. f_関数の命名規則を使用します。たとえば、関数名の前に を付けf_errます。関数呼び出しは他のコマンドと同じように見えます。これは読者へのヒントです。また、名前の衝突の可能性を減らします。

  2. 読み取りアクセスのみが必要であり、#!/bin/bash(単なるコメント) は必要ありません。

  3. Bash では、関数を解析する前にいくつかのオプションを設定する必要があります。たとえば、shopt -s extglob拡張グロビングを使用する場合は、関数の前と外で行う必要があります。それを関数内に入れるのは遅すぎます。

  4. Bash は、FPATH 環境変数または自動ロードをサポートしていません (Korn シェルのように)。

于 2012-12-11T08:21:04.883 に答える
3

新しく作成した関数をエクスポートする必要があります

abcこれを追加する最後に:

export -f err
于 2012-12-11T10:38:04.627 に答える