Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
kaninchen
- Beiträge: 4
- Registriert: 07.08.2013 14:46:50
Beitrag
von kaninchen » 07.08.2013 15:41:35
Hallo,
ich bin langsam am verzweifeln.
Ich möchte folgendes machen:
Code: Alles auswählen
mysqldump -ubenutzer -ppasswort -h localhost --opt tplbp > "/var/www/backup/backup_tplbp.$(date +"%d_%m_%Y").sql"
So das die Backupdatei das Datum erhält. Dies Funktioniert auch soweit, jedoch enthält die erzeugte Datei am ende ein "?" -> backup_tplbp.07_08_2013.sql?.
Ich habe bereits viele Scriptbeispiele durchprobiert, aber egal was ich mache, sowie ich mit dem Datum hantiere kommt das "?". Ohne Datum funktioniert alles wie gewollt.
Auch das Datum in eine Variable setzen bringt das gleiche Ergebnis.
Kann da geholfen werden?
Vielen Dank
LG kaninchen
Zuletzt geändert von
kaninchen am 07.08.2013 16:34:17, insgesamt 1-mal geändert.
-
rendegast
- Beiträge: 15041
- Registriert: 27.02.2006 16:50:33
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von rendegast » 07.08.2013 16:03:32
Hast Du vielleicht etwas beim Environment der bash eingestellt?
Code: Alles auswählen
$ echo "/var/www/backup/backup_tplbp.$(date +%d_%m_%Y).sql" | cat -A
/var/www/backup/backup_tplbp.07_08_2013.sql$
-A, --show-all äquivalent zu -vET
-E, --show-ends $ am Ende jeder Zeile ausgeben
-v, --show-nonprinting ^‐ und M‐Notation benutzen, außer für LFD und Tab.
Ein schneller Test:
sollte nach obiger Idee nur bei dem/den letzen einer Zeile ein "$" anzeigen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
kaninchen
- Beiträge: 4
- Registriert: 07.08.2013 14:46:50
Beitrag
von kaninchen » 07.08.2013 16:26:55
Hallo,
Danke erst mal für die schnelle Antwort.
Nein, ich habe nichts an den Bash Variablen verändert, zumindest nicht bewusst.
Das Ergebnis Deines ersten Beispiels (habe ich in eine Datei gelegt test.sh:
Code: Alles auswählen
bash test.sh
cat: /var/www/backup/backup_tplbp.07_08_2013.sql$: No such file or directory
test.sh: line 1: /var/www/backup/backup_tplbp.07_08_2013.sql: No such file or directory
Und des 2. Beispiels:
Code: Alles auswählen
ls /var/www/backup/backup_tplbp*
/var/www/backup/backup_tplbp.07_08_2013.sql? /var/www/backup/backup_tplbp.sh
LG kaninchen
-
uname
- Beiträge: 12406
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 07.08.2013 16:35:26
Code: Alles auswählen
mysqldump -uroot -pfuckoff007 -h localhost --opt tplbp > "/var/www/backup/backup_tplbp.$(date +"%d_%m_%Y").sql"
Mindestens unvorteilhaft sind geschachtelte, nicht escapte Anführungszeichen.
Versuche
1.)
Code: Alles auswählen
mysqldump -uroot -pfuckoff007 -h localhost --opt tplbp > "/var/www/backup/backup_tplbp.$(date +'%d_%m_%Y').sql"
und wenn es nicht hilft testweise fest codiert:
2.)
Code: Alles auswählen
mysqldump -uroot -pfuckoff007 -h localhost --opt tplbp > "/var/www/backup/backup_tplbp.07_08_2013.sql"
Im übrigen würde ich die Reihenfolge auf Jahr, Monat, Tag ändern.Hilft dann auch beim Löschen ganzer Jahre und Monate
-
kaninchen
- Beiträge: 4
- Registriert: 07.08.2013 14:46:50
Beitrag
von kaninchen » 07.08.2013 17:28:26
Hallo,
zu 1.
Direkt in die BASH eingeben ist die Funktion OK, also ohne "?".
Als Script:
Code: Alles auswählen
#!/bin/sh
mysqldump -uroot -pfuckoff007 -h localhost --opt tplbp > "/var/www/backup/backup_tplbp.07_08_2013.sql"
aufgerufen:
ist das "?" wieder vorhanden.
zu 2.
genau so wie bei 1.
Danke, LG kaninchen
-
goeb
- Beiträge: 348
- Registriert: 26.08.2006 18:12:08
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von goeb » 07.08.2013 20:51:51
Falsches Zeilenende?
Code: Alles auswählen
$ cat script
#!/bin/sh
>output
$ sh script
$ ls
output script
$ unix2dos script
unix2dos: Datei script wird ins DOS-Format konvertiert ...
$ sh script
$ ls
output output? script
Allerdings würde die Shell dann beim direkten Ausführen meckern (deswegen
sh script im Beispiel):
Code: Alles auswählen
$ ./script
bash: ./script: /bin/sh^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 07.08.2013 21:05:35
Ich tippe ebenfalls auf das Zeilenende:
Code: Alles auswählen
$ touch "/tmp/$(printf 'test\r')"
$ ls /tmp/test*
/tmp/test?
$ stat /tmp/test* | head -1
File: `/tmp/test\r'
(ja, ich weiss, dass es
-c %n gibt, aber das schmeisst ein literales
\r, also
\x0d, anstatt
\x5c\x72.)
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
kaninchen
- Beiträge: 4
- Registriert: 07.08.2013 14:46:50
Beitrag
von kaninchen » 08.08.2013 14:19:20
Hallo,
Danke, ihr habt mich auf den richtigen Weg gebracht.
Code: Alles auswählen
Falsches Zeilenende?
Ich tippe ebenfalls auf das Zeilenende:
Ich habe immer mit UEdit gearbeitet und auch daraus kopiert. Da muss das falsche Zeilenende sich eingeschlichen haben.
Ich habe alles noch mal mit nano auf dem Server eingegeben und nicht mehr kopiert, dass hat das Problem beseitigt.
Vielen Dank
LG kaninchen
-
goeb
- Beiträge: 348
- Registriert: 26.08.2006 18:12:08
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von goeb » 08.08.2013 14:35:28
Kein Grund alles neu zu tippen. Im Paket
dos2unix sind Werkzeuge um zwischen DOS/Unix/Mac-Format zu konvertieren. (Es gibt auch noch
tofrodos, das hat aber kein Tool für das Mac-Format, falls man das braucht.)
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 08.08.2013 18:35:14
Weil's gerade noch dazu passt,
ls -b druckt nicht-druckbare Zeichen in escapter Form:
Code: Alles auswählen
$ touch "$(printf ' test\r')"
$ ls *test*
?test?
$ ls -b *test*
\ttest\r
$
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier