从 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 $FILE打印success;但是,它反而打印hello world.

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

答案1

您可以将您的mySource功能更改为:

mySource() {
  source "$1"
}

然后用以下方式调用它:

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

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

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

相关内容