2012-12-07 7 views
17

Bash에서 위치 매개 변수에 값을 할당하려면 어떻게해야합니까? 기본 매개 변수에 값을 지정하려고합니다.위치 매개 변수에 할당

if [ -z "$4" ]; then 
    4=$3 
fi 

4는 명령이 아님을 나타냅니다.

답변

29

set 내장 된 위치 매개 변수

-- 옵션 (예를 들어, -x)처럼 보이는 것을 방지
$ set -- this is a test 
$ echo $1 
this 
$ echo $4 
test 

을 설정할 수있는 유일한 방법입니다.

if [ -z "$4" ]; then 
    set -- "$1" "$2" "$3" "$3" 
fi 

하지만 아마

당신은 또한 매개 변수를 살펴 -z에 대한 $# 대신 테스트를 계산 할 수 있습니다
if [ -z "$4" ]; then 
    # default the fourth option if it is null 
    fourth="$3" 
    set -- "$1" "$2" "$3" "$fourth" 
fi 

으로 더 명확 것 :

는 귀하의 경우에 당신은 할 수 있습니다.

3

당신은 네 번째 매개 변수로 다시 스크립트를 호출하여 당신이 원하는 것을 할 수 있습니다

if [ -z "$4" ]; then 
    $0 "$1" "$2" "$3" "$3" 
    exit $? 
fi 
echo $4 

./script.sh one two three 출력됩니다 같은 스크립트 위의 호출 :

+0

'./ $ 0'은 PATH를 통해 스크립트에 접근하면 작동하지 않을 것이고,'$ 0'은'./script'와'/ usr/local/bin/script' 등에서 작동 할 것입니다. – msw