2017-09-24 8 views
1

쉘 스크립트에서 작동하지 않습니다 반면 내 셸 스크립트에서 동일한 명령을 내게 명령을 찾을 수 없습니다.명령 나는 다음과 같은 명령을 포함하는 쉘 스크립트를 사용하려고

sha1 = `(./rstrings $INPUT ; cat $INPUT) | sha1sum` 

rstrings는 C executible입니다 ... 내가 스크립팅과 어떤 도움을 주시면 감사하겠습니다 쉘 새로운 오전

: 아래 스크립트 작성 문제의 라인입니다!

+0

상대 경로를 사용 중입니다. 해당 경로가 실행될 때 올바른 디렉토리에 없을 것입니다. –

+0

나는 쉘 스크립트와 같은 디렉토리에있는 명령을 실행했고 실행 파일은 ... –

+2

Cyrus, shellcheck.net이 내 실수를 찾도록 도와 주셔서 감사합니다 ... 할당 중에 여분의 공간을 사용하고있었습니다 ... 주류 프로그래밍에서 왔습니다. 언어가 놓친이 –

답변

2

실수를 저질렀습니다. 과제에서 공간을 확보해야했습니다.

sha1 = `(./rstrings $INPUT ; cat $INPUT) | sha1sum` 

아래의 사항이 변경 요구 반영 : 다른 모든 새로운 쉘 스크립터를 들어

sha1=`(./rstrings $INPUT ; cat $INPUT) | sha1sum` 

을, 공간이 할당은 허용되지된다. http://www.shellcheck.net/은 쉘 스크립팅의 모범 사례를 따르는 데 정말 도움이됩니다. Cyrus에게 감사드립니다.

+1

맞았습니다. 반면에, 공백은 테스트 표현식에서 필요합니다 (예 :'[ "$ x"= "$ y"]'가 효과적 일지 만'[ "$ x"= "$ y"]'하지 않으면) 기대하는 것,'if [ "$ x"= "$ y"]'는 전혀 작동하지 않을 것입니다). 공백은 셸 구문에서 중요한 구분 기호이므로 중요한 의미를 변경하지 않는 특정 위치에 있지 않으면 추가하거나 제거하지 마십시오. 그리고 네, [shellcheck.net] (http://www.shellcheck.net/)은 당신의 친구입니다. –