Вы можете указать параметр командной строки для своей функции. Использование параметров командной строки, не принимающих аргументов, является распространенным способом предоставления двоичных/логических значений («вкл/выкл», «истина/ложь», «включение/отключение» )для сценариев оболочки, функций оболочки и утилит в Общая.
foo () {
local flag=false
OPTIND=1
while getopts 't' opt; do
case $opt in
t) flag=true ;;
*) echo 'Error in command line parsing' >&2
exit 1
esac
done
shift "$(( OPTIND - 1 ))"
local param1="$1"
local param2="$2"
if "$flag"; then
# do things for "foo -t blah blah"
else
# do things for "foo blah blah"
fi
}
Опция -t
действует как логический флаг для пользователя. Его использование установит flag
внутри функции на true
(, изменив его значение по умолчаниюfalse
). Опция -t
будет использоваться в качестве первого аргумента функции.
Вызов функции будет осуществляться с помощью
foo "some value" "some other value"
или
foo -t "some value" "some other value"
, где последний вызов установит для переменной flag
в функции значение true
.
Все эти пакеты взяты из python3-stdlib-extensions
, который добавил версии 3.9 несколько недель назад .
Это ранний этап перехода на Python 3.9.и не влияет на программы, использующие Python 3.8 (текущую версию по умолчанию в нестабильной версии ).