2016-08-30 4 views
2

Я написал следующий shellscript. Я пытаюсь получить входные данные от пользователя, используя метод getopts. Это фрагмент кода getopts, который я написал.getopts не распознает указанные параметры как действительные

#Define the help function 
function help(){ 
    echo "Options:"; 
    echo "-u Github username" 
    echo "-p Github password" 
    echo "-r Repository name" 
    echo "-s Service name" 
    echo "-b Branch name (Default master)" 
    exit 1; 
} 


#Initialize the default values for the variables. 
username="username"; 
password="password"; 
rname="rname"; 
sname="sname"; 
branch="master"; 

#Define the getopts variables 
options="u:p:r:s:h"; 

#Start the getopts code 
while getopts options opt; do 
    case $opt in 
      u) #Get the username 
        username=$OPTARG 
      ;; 
      p) #Get the password 
        password=$OPTARG 
      ;; 
      r) #Get the repository name 
        rname=$OPTARG 
      ;; 
      s) #Get the service name 
        sname=$OPTARG 
      ;; 
      b) #Get the branch name 
        branch=$OPTARG 
      ;; 
      h) #Execute the help function 
     "echo here" 
        help; 
      ;; 
      \?) #unrecognized option - show help 
        echo "Invalid option." 
        help; 
      ;; 
    esac 
done 

#This tells getopts to move on to the next argument. 
shift $((OPTIND-1)) 
#End getopts code 

Я попытался запустить скрипт:

./testScript.sh -u myname 

я получаю следующее сообщение об ошибке:

illegal option -- u 

ответ

3
while getopts "$options" opt 
#    ^^  ^

$ заменителями в значении переменной options. Без $, getopts считает, что действительными флажками являются -o, -p, -t, -i, -n и -s.

2

Вы забыли знак доллара перед вариантов, чтобы рассмотреть его переменную:

#Start the getopts code 
while getopts $options opt; do 

Al

Смежные вопросы