プロセス置換を使用すると、Dashは「構文エラー:」(「予期しない」エラー)を報告します。

プロセス置換を使用すると、Dashは「構文エラー:」(「予期しない」エラー)を報告します。

次のbashコマンドがあります

diff <(xzcat file1.xz) <(xzcat file2.xz)

で実行する必要がありますdash。私のシステム(Debian Wheezy)では、dashcronはデフォルトのソルバーです(/bin/shyes link /bin/dash)。

でコマンドを実行すると、dash次のエラーが発生します。

Syntax error: "(" unexpected

答え1

cronジョブで何かを実行するときに特定のシェルが必要な場合は、それをスクリプトにラップしてcronからスクリプトを呼び出します。

#!/bin/bash

diff <(xzcat file1.xz) <(xzcat file2.xz)

タイムアウト作業入口

*  *  *  *  * user-name  /path/to/above/script.bash

答え2

はい、プロセスの置き換えはkshで開始された非標準機能であり、ksh、bash、およびzshでのみ使用できます。

サポートされているシステム/dev/fd/n(Debianなど)では、次のことができます。

xzcat < file1.xz | { xzcat < file2.xz | diff /dev/fd/3 -; } 3<&0

または、いつでも次のようにすることができます。

bash -c 'diff <(xzcat file1.xz) <(xzcat file2.xz)'

答え3

を使用する必要がある場合は、dash次のように動作します。

mkfifo file1
mkfifo file2
xzcat file1.xz >file1&
xzcat file2.xz >file2&
diff file1 file2
rm -f file1 file2 #remove the FIFOs

関連情報