Bash関数で「source」を呼び出す

Bash関数で「source」を呼び出す

標準入力から渡されたファイル名を取得しようとしています。私の計画は、次の関数を作成することです。

mySource() {
    # get stdin and pass it as an argument to `source`
    source $(cat)
}

次のように呼び出します。$ echo "file1.sh" | mySource場所は次file1.shのとおりです。

FILE=success
export FILE

$FILE初期化があると仮定するhello worldと、実行時に印刷されると$ echo "file1.sh" | mySource予想されますが、代わりに;$ echo $FILEsuccesshello world

関数からファイルをインポートする方法はありますか?

答え1

機能は次のように変更できますmySource

mySource() {
  source "$1"
}

次に、次のように呼び出します。

$ mySource file.sh
$ printf '%s\n' "$FILE"
success

mySource複数のファイルを処理することもできます。

mySource() {
  for f do
    source "$f"
  done
}

関連情報