文件夹中存在$1.gz,但它说无法访问,没有这样的文件或目录

文件夹中存在$1.gz,但它说无法访问,没有这样的文件或目录

我有一个脚本说

gzip -cN "$1" > "$1.gz" | ls -l "$1.gz" | awk '{print $5}'

我使用参数运行它ff,然后收到错误消息

ls: cannot access ff.gz: No such file or directory

但当我随后运行ls -l(手动,从 shell 提示符)时,我发现它ff.gz在那里。问题是什么?

答案1

如果你

命令1 | 命令2
然后或多或少同时运行 。如果您有一个多 CPU 系统,它们实际上可能同时运行。但无论如何,它们将并发运行,精确的调度由太复杂而无法预测的因素决定。cmd1cmd2

您的是  并且您的是。因此,可能在创建文件之前就开始运行。cmd1gzip -cN "$1" > "$1.gz"cmd2ls -l "$1.gz"lsgzip"$1.gz"

ls不从其标准输入读取,因此将其管道化没有任何意义。您可能想要这样做

gzip -cN“$1”>“$1.gz”  &&  ls -l “$1.gz”|awk'{打印$5}'
即运行gzip,然后,如果成功,则运行ls -l

相关内容