我希望我的脚本读取作为 glob 或 STDIN 给出的一堆文件名(可能有空格),并用它们做一些事情。我已经能够分别阅读任何一种方式,但不能将它们结合起来。
这从命令行读取 globs:
for filename in "$@"; do
process_file "$filename"
done
Run Code Online (Sandbox Code Playgroud)
这从标准输入读取:
IFS=$'\n' read -d '' -r -a filenames
for filename in "${filenames[@]}"; do
process_file "$filename"
done
Run Code Online (Sandbox Code Playgroud)
我真正想要的是从任何一个读取到一个数组中,这样我就不必将整个for filename in...循环复制两次。对不起,如果这很明显,我是 BASH 的新手。
编辑:我认为最好的办法是从 args 中读取它们,否则等待STDIN. 我该怎么做?
编辑:好的,问题不是我想的那样。问题是 process_file 也要求用户输入。有没有办法从STDINEOF 开始读取,存储它,然后再次开始要求输入?