У меня есть задание Дженкинса со следующей переменной аргументов.
source_host (параметр String) dest_user (параметр выбора) backup (параметр флажка)
Я передаю аргументы Дженкинса в Jenkins Execute Shell, как показано ниже:
$ANSIBLE_SCRIPT_HOME/transfer.sh -a $source_host -b $dest_user -c $backup
Ниже приведен скрипт Transfer.sh.
while getopts ":a:b:c:" opt; do
case $opt in
a) source_host="$OPTARG"
;;
b) dest_user="$OPTARG"
;;
c) isbkup="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG" >&2
;;
esac
done
printf "Argument source_host is %s\n" "$source_host"
printf "Argument dest_user is %s\n" "$dest_user"
printf "Argument backup is %s\n" "$backup"
Версия Jenkins: ядро и библиотеки Jenkins 2.138.1
Многочисленные уязвимости безопасности в Jenkins 2.145 и более ранних версиях, а также
LTS 2.138.1 и более ранние версии
Если я не выбираю dest_user (параметр выбора), то есть пустым, и вызываю оболочку execute, то в файле Transfer.sh отображается неверная запись для $ dest_user
Аргумент source_host - это user1
Аргумент dest_user is -c
Аргумент резервного копирования отсутствует
Я ожидал, что dest_user ничего не напечатает в выводе вместо -c.