2012-08-07 2 views
0

sudo crontab 목록을 통해 토글하려는 bash 파일이 있습니다. 내가 같은 스크립트를하지 않고 실행하면sudo bashfile이 구문 오류를 만듭니다.

size=(`du -h $backupDir --summarize`) 

, 난 PW sudo는 입력 할 필요가 : 문제는 sudo를 스크립트를 실행할 때,이 라인에 구문 오류 메시지가 있기 때문에, 작동하지 않습니다이며, 하지만 문제없이 작동합니다. 나는 대괄호, 백틱 (backticks)의 유무에 관계없이 공백의 유무에 관계없이 몇 가지 변형을 시도했지만 아무런 도움이되지 않았습니다. 오류 메시지는 다음과 같습니다.

Syntax error: "(" unexpected (expecting ";;") 

어떤 도움이 필요합니까? 당신이 따옴표를 다시 부착하려면

+0

스크립트에 배쉬 셰 배너가 있습니까? '#!/usr/bin/env bash' 또는 적어도'#!/bin/bash'? '('는 bash에서 유효하며 명령의 출력으로부터 배열을 생성해야합니다.) – c00kiemon5ter

+0

또한'case' 문을 올바르게 닫지 않는 것처럼 보이므로'expecting ;;'스크립트를 게시하면 도움이 될 것입니다 .. – c00kiemon5ter

+0

#!/bin/bash가 문제였습니다.) 모든 case 문 올바르게 닫힌 곳 :/ – Simons0n

답변

4

문제는 여기에 당신이 (때 bash는 구문 및 스크립트를 사용한다는 것입니다 cron에서 실행 됨)은 /bin/sh (어레이 및 () 구성에 대해서는 알려진 바 없음)으로 해석됩니다.

#!/bin/bash 

또는 크론에서 bash 명시 적으로 스크립트를 실행합니다 :

당신은 그녀 - 뱅 표기법을 사용하여 스크립트의 통역 bash를 지정해야 하나

bash /path/to/script 

정도 스크립트를 다시 작성, 배열 없이도 실행할 수 있습니다.

0

서있 가독성는 그 다음 $() 형태

size=$(du -h $backupDir --summarize) 

를 사용

size=`du -h $backupDir --summarize` 
+0

둘 다 더 잘 인용하십시오. @ c00kiemon5ter - 그것은 상처를주지는 않지만, 변수의 오른쪽에 필요하지 않습니다. (크기 - "cmd - 변수"); "size ="$ (cmd - args) "' – c00kiemon5ter

+0

@ c00kiemon5ter - 할당. – jordanm

관련 문제