Ich versuche, ein Shell-Skript zu schreiben, um eine Datei basierend auf Benutzerantwort zu kopieren. Ein Beispiel dafür, was ich zu tun versucht:Bash - Antwort zum Kopieren von Dateien oder Verzeichnis lesen
#!/bin/bash
echo "What is the name of the user?: "
read RESPONSE
cp /home/$RESPONSE/file.txt /home/$RESPONSE/backup/file_backup.txt
jedoch mein Kopierbefehl scheint nicht richtig die Lese Variable zu akzeptieren. Was mache ich falsch?
Was * genau * ist falsch? Wenn der Benutzername ein Leerzeichen oder einen umgekehrten Schrägstrich enthält oder als ein Glob ausgewertet werden kann, sind die Fehler ziemlich offensichtlich - aber Sie müssen genauer auf das * genaue * Verhalten achten. "Scheint nicht zu akzeptieren" - woher weißt du das? Was ist die genaue Eingabe und der genaue Fehler in der Ausgabe? –
Sie sollten 'bash -x yourscript' ausführen, um es mit der Protokollierung für aufgerufene Befehle auszuführen. Führe es auch durch http://shellcheck.net/ und repariere, was das findet (das ist immer ein guter Ratschlag, bevor du hier Shell-Fragen stellst). –
Verwenden Sie auch keine Großbuchstaben für Ihre eigenen Variablen! Großbuchstabennamen werden von Variablen verwendet, die eine Bedeutung für das Betriebssystem oder die Shell haben. Bei Verwendung von Kleinbuchstaben wird vermieden, dass versehentlich auf diese zugegriffen wird. Siehe [das entsprechende Normendokument] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html), Absatz 4 (ja, es werden Umgebungsvariablen diskutiert, aber das Setzen einer regulären Shell-Variablen überschreibt ein ähnliches benannte Umgebungsvariable, so gilt die Konvention in beiden Orten). –