대시는 프로세스 대체를 사용할 때 '구문 오류: "("예기치 않은'을 보고합니다.

대시는 프로세스 대체를 사용할 때 '구문 오류: "("예기치 않은'을 보고합니다.

다음 bash 명령이 있습니다

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

에서 실행해야 합니다 dash. 내 시스템(Debian Wheezy)에서는 dashcron의 기본 해석기( /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/nDebian과 같은 지원 시스템에서는 다음을 수행할 수 있습니다.

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

관련 정보