Shell Script Tilde Erweiterung

8

Hier ist mein Skript:

%Vor%

Bei 'read caminho' kann ich vom Benutzer einen Pfad wie ~ / somefolder erhalten. Wenn das Skript diesen Pfad erhält, wird sowohl mv als auch mkdir keine Tilde-Erweiterung machen, also wird es versuchen, einen ~ / somefolder und nicht / home / username / somefolder zu erstellen und daher fehlzuschlagen.

Wie stelle ich sicher, dass die Tilde in die HOME-Variable umgewandelt wird?

    
Diones 17.01.2009, 17:15
quelle

3 Antworten

14

Wahrscheinlich müssen Sie die Variable überprüfen, damit sie korrekt ersetzt wird. Ein Beispiel wäre einfach

%Vor%

Beachten Sie, dass dies bricht, wenn caminho Semikolons oder Anführungszeichen enthält, Backslashes auch als Escaping behandelt werden und wenn die Daten nicht vertrauenswürdig sind, müssen Sie darauf achten, dass Sie nicht das Ziel eines Injektionsangriffs sind .

Ich hoffe, das hilft.

    
falstro 17.01.2009, 17:23
quelle
2

Zitat und Erweiterung sind immer knifflig, vor allem in bash. Wenn Ihr eigenes Home-Verzeichnis gut genug ist, funktioniert dieser Code (ich habe es getestet):

%Vor%     
Norman Ramsey 17.01.2009 17:36
quelle
-1

Vielleicht verwenden Sie /home/${USER} anstelle Ihres hohen Benutzerlevelverzeichnisses, wenn if nicht /home ist.

    
Rob Wells 17.01.2009 17:25
quelle

Tags und Links