从 bash 函数调用 `source`

web*_*rc2 4 bash function

我正在尝试获取一个名称从标准输入传递的文件。我的计划是创建一个这样的函数:

mySource() {
    # get stdin and pass it as an argument to `source`
    source $(cat)
}
Run Code Online (Sandbox Code Playgroud)

被这样称呼:$ echo "file1.sh" | mySource其中file1.sh是:

FILE=success
export FILE
Run Code Online (Sandbox Code Playgroud)

假设$FILE初始化为hello world,当我运行时$ echo "file1.sh" | mySource,我希望$ echo $FILE打印success;但是,它会打印hello world.

有没有办法从函数中获取文件?

cuo*_*glm 6

您可以将mySource函数更改为:

mySource() {
  source "$1"
}
Run Code Online (Sandbox Code Playgroud)

然后调用它:

$ mySource file.sh
$ printf '%s\n' "$FILE"
success
Run Code Online (Sandbox Code Playgroud)

您还可以mySource处理多个文件:

mySource() {
  for f do
    source "$f"
  done
}
Run Code Online (Sandbox Code Playgroud)