2017-03-01 2 views
-1

Ich versuche etwas zu skripten, das nicht richtig mit dem Datum-Befehl ausgibt. Hier ist der Inhalt dessen, was ich bisher:Datum keine solche Datei oder Verzeichnis

#!/bin/bash 
# Get RPM manifest 
# Output written to /tmp 

NOW=$(date +%D) 

rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > /tmp/$HOSTNAME.RPM_Manifest.$NOW.txt 

Wenn ich dieses Skript ausführen, erhalte ich diese Meldung:

[[email protected] ~]# sh /usr/local/bin/rpm_manifest.sh 
/usr/local/bin/rpm_manifest.sh: line 7: /tmp/linmachine1.RPM_Manifest.03/01/17.txt: No such file or directory 

Ich vermute, das Problem ist, wie das Datumsformat in der NOW Variable I Definiere kann der Schuldige sein. Ich habe es mit und ohne Anführungszeichen ausprobiert und bekomme das Gleiche. Wenn ich mir die Manpages anschaue, habe ich keine Möglichkeit gesehen, das Standardverhalten so zu ändern, dass die Schrägstriche durch Punkte ersetzt werden, da ich der Ansicht bin, dass hier das Problem liegt.

EDIT: Vielen Dank für Ihre Antworten. Ich bin mir nicht wirklich sicher, warum dies jedoch abgelehnt wurde. Ich habe eine berechtigte Frage gestellt. Was gibt?

+2

Als Seite beachten, wenn Sie eine 'bash' shebang haben, nicht Ihr Programm mit' sh' laufen . Machen Sie Ihre Datei entweder mit 'chmod + x' ausführbar und führen Sie sie direkt aus, oder führen Sie sie mit' bash' aus. – Aserre

+0

Geben Sie einfach den Dateinamen an: 'sort>"/tmp/$ HOSTNAME .... txt "' – fedorqui

+0

Die Fehlermeldung lautet ziemlich explizit - es ist überhaupt kein Problem mit "date", sondern mit dem Öffnen der Ausgabedatei (was geschieht * bevor * die Shell das 'date' startet), da es versucht,' 17.txt' in einem Verzeichnis zu erzeugen '/ tmp/linmachine1.RPM_Manifest.03/01', die nicht existiert. –

Antwort

1

Ja, Sie sollten keine Schrägstriche in einem Dateinamen haben.

Verwendung:

now=$(date "+%d.%m.%Y") 

rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > "/tmp/$HOSTNAME.RPM_Manifest.$now.txt" 

stattdessen oder ersetzen Sie die . mit was auch immer Sie bevorzugen

+0

Ich nehme an, das zusätzliche 'date' in' now = $ (date date "+% d.% M.% Y") 'ist ein Tippfehler – Aserre

+0

@Aserre ja, danke fürs Hinweisen. – arco444

Verwandte Themen