我试图这样做来决定是否将标准输入重定向到文件:
[ ...some condition here... ] && input=$fileName || input="&0"
./myScript < $input
但这不起作用,因为当变量 $input 为“&0”时,bash 将其解释为文件名。
但是,我可以这样做:
if [ ...condition... ];then
./myScript <$fileName
else
./myScript
问题是 ./myScript 实际上是一个很长的命令行,我不想复制它,也不想为它创建一个函数,因为它也没有那么长(不值得)。
然后我想到这样做:
[ ...condition... ] && input=$fileName || input= #empty
cat $input | ./myScript
但这需要再运行一个命令和一个管道(即一个子shell)。
还有其他更简单、更高效的方法吗?