Kar*_*lek 5 bash shell-script files
我有一个命令,它为我提供了一个文件列表,每行一个。文件名是“正常的” - 没有空格,不需要转义括号等。
现在我想将该命令通过管道传递给类似的东西,test -f并且当且仅当所有文件都存在时才返回 true 。(带有 0 行的行为可能是未定义的,我不在乎。)
所以,像
make_list_of_files | test -f
Run Code Online (Sandbox Code Playgroud)
但实际上工作。
“Bashisms”是允许的,因为我在 Bash 中需要它。
这些文件不在同一目录中,但它们在当前目录的子目录中,并且路径中有目录名称,例如
dir/file1
dir/file2
dir2/file3
Run Code Online (Sandbox Code Playgroud)
allExist(){
while IFS= read -r f; do
test -e "$f" || return 1
done
}
make_list_of_files | allExist
Run Code Online (Sandbox Code Playgroud)
这应该适用于所有 POSIX shell。