Bash에서 2개 이상의 OPTARG 사용

Bash에서 2개 이상의 OPTARG 사용

나는 "전문적인" 스크립트를 만들고 싶습니다. $1, $2...를 사용하지만 지금은 getopts를 배우고 있습니다.

여기 내 작은 스크립트가 있습니다:

function name(){
         echo "My name is $1"
}
function last_name(){
         echo "My last name is $1"
}
function name_complete(){
}
while getopts ":n:p:" option;do
      case $option in
           n)
              n=$OPTARG
              name $n
           ;;
           p)
              p=$OPTARG
              last_name $p
           ;;
      esac
done

name_complete함께 사용하는 방법을 알고 싶습니다 .-n-p

예를 들어:

./script.sh -n John -p Doe

내 이름은 존 도야

감사해요!

답변1

기능을 실행하세요뒤쪽에귀하의 while getopts- 루프:

function name_complete(){
    printf 'My name is %s %s\n' "$1" "$2"
}

while getopts ":n:p:" option; do
      case "$option" in
           n)
              n=$OPTARG
              ;;
           p)
              p=$OPTARG
              ;;
      esac
done

name_complete "$n" "$p"

변수는 항상 인용해야 합니다.

답변2

이것으로 시작하세요:

while getopts ":n:p:" option;do
      case $option in
           n)
              n=$OPTARG
           ;;
           p)
              p=$OPTARG
           ;;
      esac
done

if [ -n "$n" -a -n "$p" ] ; then
  name_complete "$n" "$p"
elif [ -n "$n" ] ; then
  name "$n"
elif [ -n "$p" ] ; then
  last_name "$p"
else
  echo At least one option is needed
fi

관련 정보