Frage

Ich habe ein nervigsten Problem gestoßen, die auf der PWD Variable tritt auf, wenn der Strompfad ein Leerzeichen enthält. Mein Code sieht etwas wie folgt aus:

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

Dies funktioniert gut, es sei denn, der aktuelle Pfad ein Leerzeichen enthält. Ist dies der Fall, wird $(pwd) zu
erweitert     

'mypath/with space'
statt nur
    
mypath/with space

Diese Ursache der sed Ausdruck vermasselt werden (wegen der zusätzlichen Anführungszeichen):

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

Ich habe bemerkt, dass es nicht hilft PWD wie diese zu erweitern. ${PWD//\'/}

Alle Ideen, wie kann ich dieses Problem lösen?

War es hilfreich?

Lösung

Ersetzen Sie einfache Anführungszeichen durch doppelte Anführungszeichen und ersetzen Anführungszeichen mit einfachen Anführungszeichen um PWD:

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

Doppelte Anführungszeichen erlauben Expansion von Variablen und backquoted Befehle.

Andere Tipps

Was passiert, wenn Sie ersetzen

'$(pwd)'

mit

'"$(pwd)"'

aussehen würde dieses dann:

mycommand | sed -E '  
 s|mystuff|replacement| ;  
 s|'"$(pwd)"'|replacement| ;  
 '
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top