2012-12-11 9 views
21

こんにちは、私はSHELLスクリプトの新機能です。実は私は今、私はxyzシェルスクリプト関数をインポートする

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

がそれです別のファイルでそれをインポートしていたファイルが、彼らは単純なファイルです.sh拡張子ではありませんファイルabcに機能err()を持っていますが、#!/bin/bash

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

で始まります輸入の正しい方法は?

答えて

22

あなたが上かのように述べたようにはい、あなたが行うことができます:. FILENAME

ファイルはここ、大丈夫です.sh

4

で終了する必要はありませんいくつかのより多くのヒントです:

  1. 使用例えば、f_errのように、関数名の前にf_という接頭辞を付けるなど、関数の命名規則です。関数呼び出しは他のコマンドと同じように見えますが、これは読者のヒントです。また、名前の衝突の可能性も低くなります。

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

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

  4. Bashは、FPATH環境変数または自動ロード(Kornシェルのように)をサポートしていません。あなたがabcの終わりに輸出新しく作成された機能

    に必要

2

この追加:あなたは一つだけが起動(サブシェルで、それを利用できるようにする機能をエクスポートする必要が

export -f err 
+0

をbashの別のインスタンスを実行することによって)。ファイルをソースした後、そこに定義されている関数はすべて現在のシェルで利用可能になります。 – chepner

関連する問題