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?
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
Geben Sie einfach den Dateinamen an: 'sort>"/tmp/$ HOSTNAME .... txt "' – fedorqui
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. –