다음 bash 명령이 있습니다
diff <(xzcat file1.xz) <(xzcat file2.xz)
에서 실행해야 합니다 dash
. 내 시스템(Debian Wheezy)에서는 dash
cron의 기본 해석기( /bin/sh
는 에 대한 링크입니다 /bin/dash
)입니다.
에서 명령을 실행하면 dash
다음 오류가 발생합니다.
Syntax error: "(" unexpected
답변1
크론 작업에서 무언가를 실행할 때 특정 셸이 필요한 경우 이를 스크립트로 래핑하고 크론에서 스크립트를 호출합니다.
#!/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