我正在尝试获取名称从标准输入传递的文件。我的计划是创建一个像这样的函数:
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
}