Question

Je l'ai rencontré un problème plus ennuyeux qui se produit sur la variable PWD lorsque le chemin courant comprend un espace. Mon code ressemble un peu à ceci:

mycommand |sed -E '  
 s|mystuff|replacement| ;  
 s|'$(pwd)'|replacement| ;  
 '

Cela fonctionne très bien, à moins que le chemin actuel contient un espace. Dans le cas contraire, $(pwd) est étendu à
    

'mypath/with space'
au lieu de simplement
    
mypath/with space

Cette cause l'expression sed à foiré (à cause des citations supplémentaires):

sed: 1: "s|mypath/with": unterminated substitute pattern

Je l'ai remarqué que cela ne contribue pas à développer PWD comme ceci:. ${PWD//\'/}

Toutes les idées sur la façon dont cela peut être résolu?

Était-ce utile?

La solution

Remplacer les guillemets simples guillemets doubles et remplacer les devis avec backquotes autour PWD:

mycommand | sed -E "
 s|mystuff|replacement| ;
 s|`pwd`|replacement| ;
"

Les guillemets doubles permettent une expansion des variables et des commandes backquoted.

Autres conseils

Et si vous remplacez

'$(pwd)'

avec

'"$(pwd)"'

ressemblerait à ceci alors:

mycommand | sed -E '  
 s|mystuff|replacement| ;  
 s|'"$(pwd)"'|replacement| ;  
 '
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top