Solution:
La substitution correcte est
home_mf="${home//\//}"
Celui-ci se décompose comme suit :
//
remplacer chaque\
barre oblique inverse/
avec/
sabrer
Manifestation:
$ t="abc"; echo "${t//\//}"
/a/b/c
Une alternative qui peut être plus facile à lire serait de citer le modèle et le remplacement :
home_mf="${home//'"https://advancedweb.fr/"https://advancedweb.fr/"}"
Cela le fera :
home_mf=${home////\} # forward to backward slash
home_mf=${home//\//} # backward to forward slash
par exemple:
$ cat slash.sh #!/bin/bash set -x home=/aa/bb/cc home_mf=${home////\} echo $home_mf home_mf=${home_mf//\//} echo $home_mf $ ./slash.sh + home=aa/bb/cc + home_mf="aabbcc" + echo 'aabbcc' aabbcc + home_mf=/aa/bb/cc + echo /aa/bb/cc /aa/bb/cc
Les ${variable/..}
la syntaxe est ksh
, bash
, et éventuellement d’autres shells spécifiques mais n’est pas présent dans tous les shells basés sur la syntaxe du shell Bourne, par exemple dash
. Si vous voulez un moyen portable (POSIX), vous pouvez utiliser sed
au lieu:
home_mf=$(printf "%s" "$home" | sed 's///\/g') # forward to backward slash
home_mf=$(printf "%s" "$home_mf" | sed 's/\///g') # backward to forward slash