我正在尝试获取一个名称从标准输入传递的文件。我的计划是创建一个这样的函数:
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
.
有没有办法从函数中获取文件?
您可以将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)