在 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-nand一起使用-p

例如:

./script.sh -n John -p Doe

我的名字是 John 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

相关内容