From 3b8a91efe66030ef78972a29ccd21e8fad39cec8 Mon Sep 17 00:00:00 2001 From: Chris Vogel Date: Tue, 21 May 2024 10:15:13 +0200 Subject: [PATCH] Update getopts to accept arguments that are valid arguments to echo The usage of `echo` to output arguments to to a pipe leads to the problem that arguments that are valid to `echo` itself cannot be processed: ``` root@yt:~# TEST='-n' root@yt:~# printf '%s\n' $TEST -n root@yt:~# echo "$TEST" root@yt:~# echo "debug $TEST" debug -n ``` Replacing `echo` with `printf` improves the situation. --- helpers/getopts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helpers/getopts b/helpers/getopts index e912220e4..f9ef5dc0b 100644 --- a/helpers/getopts +++ b/helpers/getopts @@ -77,9 +77,9 @@ ynh_handle_getopts_args() { # And replace long option (value of the option_flag) by the short option, the option_flag itself # (e.g. for [u]=user, --user will be -u) # Replace long option with = (match the beginning of the argument) - arguments[arg]="$(echo "${arguments[arg]}" | sed "s/^--${args_array[$option_flag]}/-${option_flag} /")" + arguments[arg]="$(printf '%s\n' "${arguments[arg]}" | sed "s/^--${args_array[$option_flag]}/-${option_flag} /")" # And long option without = (match the whole line) - arguments[arg]="$(echo "${arguments[arg]}" | sed "s/^--${args_array[$option_flag]%=}$/-${option_flag} /")" + arguments[arg]="$(printf '%s\n' "${arguments[arg]}" | sed "s/^--${args_array[$option_flag]%=}$/-${option_flag} /")" done done