Heftiger Schlag unter Angabe des Stromweg (PWD)
-
21-09-2019 - |
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?
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| ;
'