2017-10-10 2 views
0

파일을 처리하는 bash 셸에서 프로그램을 작성하려고합니다. 매번 특정 열을 인쇄 할 수 있도록 다양한 방법으로 명령 줄에서 프로그램을 호출해야합니다. 의 예를 들어이 호출 보겠습니다 :[-f : 명령을 찾을 수 없습니다.

./prog.sh -f file 

이 부분에 대한 내 코드입니다

if [[($1 == '-f') && ($2 == '<file>')]] ; then 
echo "do stuff and print column" 

내가 그러나 나는 또한 다음과 같은 경고지고있어, 나는 인쇄 할 열을받을 수 있나요 :

[-f 명령을 찾을 수 없습니다.

오류를 제거하는 방법에 대한 아이디어가 있으십니까? 코드가 될 수 있도록

+4

다음을보십시오 : http://www.shellcheck.net/ – Cyrus

+0

해당 코드 (GNU Bash 4.3)에서 해당 오류 메시지를 재현 할 수 없습니다. 그것이 오류의 원인이되는 코드의 일부입니까? – wjandrea

+0

당신이 준 특정 라인은 작동하지 않는 [mcve]에도 불구하고 * * 오류를 일으키지 않습니다. 매우 잘 알려진 원인으로 인해 오류가 발생합니다. 여기에는 많은 중복 된, 이미 답변 된 질문이 있습니다. –

답변

-2

당신은 테스트로 파일 검사를 다시 작성해야합니다

if [[(-f $1) && ($2 == '<file>')]] ; then 
    echo "do stuff and print column" 
+1

나는 그것이 OP가 의미했던 것 같지 않습니다. -f 플래그가 거기에 있습니다. –

+0

@EliranMalka 예, 맞습니다. 보지 못했습니다. – CheesyMacHack

1

공간이 대괄호 주위에있을 있는지 확인합니다. [[]]은 별도의 토큰이되어야합니다. 괄호는 아무 것도 추가하지 않고 삭제할 수 있습니다. (당신이 그들을두면 그들은 또한 양쪽에 공간이 필요합니다.)

그것은 가치가 무엇인지에 대한
if [[ $1 == '-f' && $2 == '<file>' ]]; then 
    echo "do stuff and print column" 
fi 

$2 검사는 아마 없을 것이다. 모든 문자열은 유효한 파일 이름입니다.