모호한 리디렉션 오류를 발생시키는 RHEL7 Cron 항목이 있습니까? [복사]

모호한 리디렉션 오류를 발생시키는 RHEL7 Cron 항목이 있습니까? [복사]

모호한 리디렉션 오류를 보내는 crontab 항목이 있었습니다. 날짜를 읽는 명령인 것은 확실하지만 수정 방법을 모르겠습니다. 다른 해결책이 있나요?

/bin/sh는 /bin/bash로 리디렉션됩니다.

 /opt/startup-shutdown/startup.instances Other > /tmp/`date +%Y%m%d%H%M%S`-cron.log 2>&1

다음을 제공합니다:

/bin/sh: 1  
: ambiguous redirect

답변1

크론탭 사용%특별한 목적을 위해:

개행 문자까지 줄의 전체 명령 부분또는 % 문자, /bin/sh 또는 crontab 파일의 SHELL 변수에 지정된 쉘에 의해 실행됩니다. 백슬래시()로 이스케이프하지 않는 한 명령의 백분율 기호(%)는 개행 문자로 변경되고 첫 번째 % 이후의 모든 데이터는 명령에 표준 입력으로 전송됩니다.

crontab에 date 명령을 넣으면,모든%백슬래시를 사용하여 인용해야 합니다.

답변2

캐리지 리턴 문제인 것 같아요.

예를 들어 리디렉션 연산자의 오른쪽에 있는 단어가 두 개 이상의 필드로 확장되는 경우( echo > *예: gets에서) Bash가 표시하는 오류입니다 bash: *: ambiguous redirect.

여기서는 1그 뒤에 줄바꿈 문자가 있다고 언급되어 있습니다. 다음과 같은 입력으로 비슷한 오류가 발생할 수 있습니다 2>&1<CR><LF>.

$ printf 'echo foo 2>&1\r\n' |bash
: ambiguous redirect

여기서 CR은 커서를 줄의 시작 부분으로 이동하므로 그 뒤의 모든 내용이 첫 번째 부분을 덮어씁니다. 여기에 CR이 표시됩니다.

$ printf 'echo foo 2>&1\r\n' |bash 2>&1|cat -A
bash: line 1: 1^M: ambiguous redirect$

귀하의 경우 CR이 일반 줄 바꿈으로 인쇄되는 이유를 모르겠습니다. 터미널 설정일 수 있습니다.

파일이 Windows에서 제공되었는지 확인하고 dos2unix다른 방법을 통해 sed -i 's/\r//'실행하세요 . "캐리지 리턴"을 검색하면 클릭이 발생합니다.

관련 정보