| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/bin/bash
- # https://github.com/YunoHost/yunohost/pull/394
- # Substitute/replace a string (or expression) by another in a file
- #
- # usage: ynh_replace_string match_string replace_string target_file
- # | arg: match_string - String to be searched and replaced in the file
- # | arg: replace_string - String that will replace matches
- # | arg: target_file - File in which the string will be replaced.
- #
- # As this helper is based on sed command, regular expressions and
- # references to sub-expressions can be used
- # (see sed manual page for more information)
- ynh_replace_string () {
- local delimit=@
- local match_string=$1
- local replace_string=$2
- local workfile=$3
- # Escape the delimiter if it's in the string.
- match_string=${match_string//${delimit}/"\\${delimit}"}
- replace_string=${replace_string//${delimit}/"\\${delimit}"}
- sudo sed --in-place "s${delimit}${match_string}${delimit}${replace_string}${delimit}g" "$workfile"
- }
- # Substitute/replace a password by another in a file
- #
- # usage: ynh_replace_password_string match_string replace_string target_file
- # | arg: match_string - String to be searched and replaced in the file
- # | arg: replace_string - String that will replace matches
- # | arg: target_file - File in which the string will be replaced.
- #
- # This helper will use ynh_replace_string, but as you can use special
- # characters, you can't use some regular expressions and sub-expressions.
- ynh_replace_password_string () {
- local match_string=$1
- local replace_string=$2
- local workfile=$3
- # Escape any backslash to preserve them as simple backslash.
- match_string=${match_string//\\/"\\\\"}
- replace_string=${replace_string//\\/"\\\\"}
- # Escape the & character, who has a special function in sed.
- match_string=${match_string//&/"\&"}
- replace_string=${replace_string//&/"\&"}
- ynh_replace_string "$match_string" "$replace_string" "$workfile"
- }
|