我有一个将文件与 连接的脚本cat
。它大致包含以下行,如果目录不包含文件,则脚本会挂起读取标准输入:
cat /path/to/dir/* > concat.txt
有没有办法让它cat
不从标准输入读取任何内容并产生一个空输出(如果不存在文件)/path/to/dir/
,或者使用另一个命令来实现相同的目的?
答案1
似乎您已nullglob
启用,因此/path/to/dir/*
如果 中不存在任何文件,则 会扩展为无/path/to/dir/
。当然,您可以禁用nullglob
(shopt -u nullglob
)并获取默认行为,/path/to/dir/*
如果没有匹配项,则 保持原样,并cat
会抱怨不存在的文件:
$ cat /path/to/dir/*
cat: '/path/to/dir/*': No such file or directory
您也可以直接在/dev/null
末尾添加一个:
$ shopt -s nullglob; cat /path/to/dir/* /dev/null
$ echo $?
0
cat
将从 立即获得 EOF /dev/null
,因此它不会写入任何内容并退出。