У меня проблема с getopts. Когда я пишу ./nameofscript.sh -n name - он должен создать новый репозиторий, но он говорит мне: - n - неизвестный параметр и в новой строке: добавление пользователя с именем: пустое.Bash с getopts/flags и несколькими функциями
Почему это происходит?
#!/bin/bash
#what2do=${0##*/}
#what2do=${what2do%.sh}
what2do="addProject"
what2do="addRepository"
what2do="addUser"
doAddRepository() {
local repoName="$1"
echo "Adding repo with name: $repoName"
# Adding new repository with the name $repoName...
}
doAddProject() {
local projName="$1"
echo "Adding project with name: $projName"
# Adding new project with the name $projName...
}
doAddUser() {
local userName="$1"
echo "Adding user with name: $userName"
# Some code to add user "$userName"...
}
case $what2do in
addRepository)
while getopts 'n:' key; do
case $key in
n) REPO_NAME=$OPTARG ;;
esac
done
doAddRepository "$REPO_NAME"
exit $?
;;
addProject)
while getopts 'm:' key; do
case $key in
m) PROJ_NAME=$OPTARG ;;
esac
done
doAddProject "$PROJ_NAME"
exit $?
;;
addUser)
while getopts 'u:' key; do
case $key in
u) USER_NAME=$OPTARG ;;
esac
done
doAddUser "$USER_NAME"
exit $?
;;
*)
echo "I don't know how to $what2do. Maybe, it is NIY" >&2
# doShowUsage
exit 1
;;
esac
Окей так как я могу избавиться от этой проблемы? Должен ли я сделать 3 разных случая и определить в начале 3 другие переменные? Например: what2do, what2do2, what2do3? Это решение? – adamos
На мой взгляд, ваш сценарий может читать два пареметра со входа. Как ./script.sh -m -p parameter. И затем используйте свой скрипт как: Чтобы добавить проект, например: ./script.sh -m project -p project_name –
Можете ли вы показать мне код, как вы его видите? Как насчет переменной «what2do»? – adamos