5 changed files with 76 additions and 3 deletions
@ -0,0 +1,51 @@ |
|||
#!/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" |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue