프로세스 대체를 사용할 때 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

관련 정보