Merge pull request #683 from YunoHost/fix_getopts

Escape $ in getopts
This commit is contained in:
Maniack Crudelis 2019-03-25 13:51:20 +01:00 committed by GitHub
commit ebaa16da3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -154,6 +154,15 @@ ynh_handle_getopts_args () {
fi
# Escape double quote to prevent any interpretation during the eval
all_args[$i]="${all_args[$i]//\"/\\\"}"
# Escape $ as well to prevent the string following it to be seen as a variable.
all_args[$i]="${all_args[$i]//$/\\\$}"
# For the record.
# We're using eval here to get the content of the variable stored itself as simple text in $option_var...
# Other ways to get that content would be to use either ${!option_var} or declare -g ${option_var}
# But... ${!option_var} can't be used as left part of an assignation.
# declare -g ${option_var} will create a local variable (despite -g !) and will not be available for the helper itself.
# So... Stop fucking arguing each time that eval is evil... Go find an other working solution if you can find one!
eval ${option_var}+=\"${all_args[$i]}\"
shift_value=$(( shift_value + 1 ))
@ -195,6 +204,8 @@ ynh_handle_getopts_args () {
# Escape double quote to prevent any interpretation during the eval
arguments[$i]="${arguments[$i]//\"/\\\"}"
# Escape $ as well to prevent the string following it to be seen as a variable.
arguments[$i]="${arguments[$i]//$/\\\$}"
# Store each value given as argument in the corresponding variable
# The values will be stored in the same order than $args_array