Ich habe eine Datei, die Dateinamen mit absolutem Pfad enthält.
In der Mitte dieses Pfades befindet sich ein Variablenverzeichnis. Wenn ich den variablen Teil hart codiere, funktioniert er einwandfrei. Wenn ich ihn jedoch durch den Variablennamen ersetze, sed
funktioniert der Teil nicht.
Der sed
Teil besteht darin, das Muster oder in diesem Fall den Pfad zu löschen.
file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`
shell-script
sed
filenames
quoting
Boston
quelle
quelle
Antworten:
Wenn Sie einfache Anführungszeichen verwenden, werden Variablennamen nicht erweitert. Sie müssten doppelte Anführungszeichen verwenden, auch bekannt als weiche Anführungszeichen.
oder entkommen Sie den Anführungszeichen:
Sie müssen auch sicherstellen, dass
$var
keine Doppelpunkt-, Punkt-, Stern-[
, Zeilenumbruch- oder Backslash-Zeichen enthalten sind oder dass sie in diesem Fall maskiert werden.quelle
#
, neue Zeile usw. gibt, würden Sie Probleme haben.