2017-03-10 3 views
0

이것은 간단한 대답이어야하지만 간단한 해결책을 찾을 수 없었습니다. reindent.py 도구를 실행하는 bash 스크립트를 만들려고하는데 디스크에 파일을 다시 쓰길 원하는지 여부에 대한 사용자 입력을 원합니다. 기본적으로 reindent_python -n FILE_PATH 또는 reindent_python FILE_PATH을 입력하고 싶습니다.배쉬 함수 매개 변수를 얻고 비교하는 방법?

function reindent_python() { 
    if ["$1" = "n"]; then 
     ./reindent.py -n $2 
    else 
     ./reindent.py $2 
    fi 
} 

이 처음 쉘 스크립트이기 때문에 내가 첫 번째 매개 변수는 -n과 $1이 n 매개 변수와 $2 FILE_PATH 여부하는 방법을 잘 모르겠어요 : 지금까지 나는 다음있어? 이 스크립트를 작성하려면 어떻게해야합니까?

감사합니다.

+1

'./reindent.py "$의 @"'와 같은, 죄송 위치 매개 변수 –

+0

@DiegoTorresMilano을 확장, I 당신의 대답을 이해하지 못했습니다. 설명해 주시겠습니까? –

+1

http://shellcheck.net/이 걸릴 것입니다. –

답변

2

먼저 표시되는 것은 스크립트가 아닌 함수입니다.

function reindent_python() { 
    ./reindent.py "[email protected]" 
} 

는 파이썬 스크립트 함수와 같은 인수를 보인다는 사실을 주어진 : 귀하의 기능은 간단 할 수있다. 위의 구조로 파이썬 스크립트에 모든 것을 전달할 수 있습니다. @CharlesDuffy이 주석에 언급 된 바와 같이

function 키워드는 필요하지 않습니다 :

reindent_python() { 
    ./reindent.py "[email protected]" 
} 

제외하고는 if 부분은 괄호와 대시 주위 공간

[ "$1" = "-n" ]; 

되어야한다 n 앞에

+1

'function' 키워드를 제거하는 것이 좋습니다 - POSIX sh와 호환되지 않는 기능을 만들지 만,이 기능을 사용하지 않으면 완전히 이식 가능하고 정확하게 똑같이 작동합니다. –

+0

감사합니다. –

1

매우 가깝습니다. 바로 -을 추가하십시오. 문자열 비교는 단순하고 다른 처리는하지 않으며 하이픈을 제거하지 않습니다.

function reindent_python() { 
    if [ "$1" = "-n" ]; then 
     ./reindent.py -n "$2" 
    else 
     ./reindent.py "$2" 
    fi 
} 

또는 함수를 호출 할 때 제거 : 정확히

reindent_python n FILE_PATH

+0

제안 해 주셔서 감사합니다. @CharlesDuffy –