2016-10-11 4 views
0

~/bin/rclone_sync_ACD.log에있는 로그 파일의 쉘 스크립트에서 cat을 실행하는 데 문제가 있습니다. 이 쉘 스크립트의 라인 :쉘 스크립트를 통해 cat에 대한 사용 권한이 거부되었습니다.

RESULT=cat $LOGFILE | tail -1 

그러나 스크립트를 실행했을 때 얻을 : 나는 cat $LOGFILE | tail -1를 입력하면

./rclone_sync: line 63: /Users/pjburnhill/bin/rclone_sync_ACD.log: Permission denied 

터미널은, 그것이 바로 출력을 제공합니다.

올바른 행에 액세스하여 인쇄하려면 스크립트에서 어떤 권한을 가져야합니까?

감사합니다, PJ

+1

'RESULT = cat $ LOGFILE | tail -1'은'$ LOGFILE'을 명령으로 실행합니다. (아마도 실행 파일이 아니므로 오류입니다.) 'RESULT = $ (cat $ LOGFILE | tail -1)'또는 [간단히] (https://en.wikipedia.org/wiki/Cat_ (Unix) #Useless_use_of_cat)'RESULT = $ (꼬리 -1 "$ LOGFILE")'. 이것은 정말로 기본적인 내용입니다. 셸 스크립팅 자습서를 읽을 수 있습니다. – Biffen

+2

[shellcheck] (http://shellcheck.net)를 시도하십시오. 자동으로 [귀하의 문제] (https://github.com/koalaman/shellcheck/wiki/SC2037)를 감지합니다. –

답변

2

는 변수에 명령의 출력을 지정 역 따옴표 또는 $()에서 명령을 포장합니다.

RESULT=$(cat $LOGFILE | tail -1) 

당신의 명령은 변수 할당 RESULT=cat 환경을 수행하고 해당 환경에서 명령 $LOGFILE | tail -1을 실행. $LOGFILE은 실행 파일이 아니기 때문에 오류가 발생했습니다.