Я создаю немного функции для процесса, который я должен часто повторять.
То, что я хотел бы сделать, - то, что, если я вызываю функцию, без параметров, она покажет мне ответвления и позволит мне делать процесс к ответвлению, которое я ввел, и если я называю ее с параметром для создания процесса на таком ответвлении непосредственно
function 3bra(){
#If there's no parameter
if ["$1" -eq ""]; then
#show me the branches
git branch
#wait for input and give the parameter such entered value
read $1
fi
#checkout to the parameter branch
git checkout "$1"
if [ $? -eq 0 ]; then
#if there are no errors, complete the checkout process
npm i
npm rebuild node-sass --force
npm run start
fi
}
Мой вопрос состоит в том, как я могу дать $1
входное значение, и также выходит, если ничто не дано во входе, ожидают часть
#!/bin/bash
branch=""
function 3bra(){
#If there's no paramether
if [[ -z "$*" ]]; then
#show me the branches
git branch
#wait for input and give the paramether such entered value
echo "Which branch?"
read -t 10 branch || exit
else
#Stuff to do if 3bra is called with params...
branch="$1"
fi
#checkout to the paramether branch
git checkout "$branch"
if [[ "$?" -eq 0 ]]; then
#if there are no errors, complete the checkout process
npm i
npm rebuild node-sass --force
npm run start
fi
}
#Call the function and pass in the parameters.
3bra "$1"
read -t 10
указывает тайм-аут 10 секунд. Если никакой вход не обеспечивается, выходы сценария.
Принятие там является другими вещами в этом сценарии, иначе Вам действительно не был бы нужен вызов функции. Сохраните сценарий и выполните его, передающий в аргументе. Это передаст аргумент функции, если существующий.
Кроме того, я не знаком с мерзавцем, поэтому если что-то мерзавец releated застревает в неправильном месте, хорошо мое плохое.
Вот то, как я записал бы это (со сносками):
function 3bra(){
local branch # (1)
if [[ $1 ]]; then # (2)
branch="$1"
else
# Show branches.
git branch
# Get branch from user.
read branch # (3, 4)
fi
# Checkout the given branch.
if git checkout "$branch"; then # (5)
# Complete the checkout process.
npm i
npm rebuild node-sass --force
npm run start
fi
}
branch
локальный для функции. Это не требуется, но это - хорошая привычка.[[ $1 ]]
) возвратит false если $1
сброшен или пустой указатель. Это - более сжатый способ сделать то, что Вы делали. [ "$1" -eq "" ]
read
луг переменная, Вы используете имя переменной (branch
), не его содержание ($branch
).set -- arg1 arg2
Также, если Вы хотите быть действительно полными, бросить ошибку, если слишком много аргументов обеспечиваются:
if [[ $# -gt 1 ]]; then
echo "${FUNCNAME[0]}: Too many arguments" >&2
return 1
fi
if [[ $1 ]]; then
...