$ 1.gzはフォルダーに存在しますが、アクセスできない、そのようなファイルまたはディレクトリーはないという


0

というスクリプトがあります

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(手動で、シェルプロンプトから)実行するff.gzと、そこにあることがわかります。何が問題ですか?

回答:


1

もしあなたがそうするなら

cmd 1  |  cmd 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 '{print $ 5}'
つまり、を実行しgzip、成功した場合はを実行しls -lます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.