
Das folgende Bash-Skript funktioniert nicht. Ich muss das Datum abhängig von der Anzahl der Tage seit dem 14. Oktober 1582 berechnen, wobei das Argument die Anzahl der Tage sein wird.
d="$1"
date -d '14 Oct 1582 + "$d" days'
beispielsweise der Befehl
./datedays.sh 154748
sollte geben
Wed Jun 21 00:00:00 BST 2006
stattdessen gibt es einen Fehler
date: invalid date ‘14 Oct 1582 + "$d" days’
Antwort1
Sie müssen doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden:
date -d "14 Oct 1582 + $d days"
Antwort2
Sie verwenden starke Anführungszeichen (einfache Anführungszeichen) im Skript, da starke Anführungszeichen die Interpretation des Inhalts innerhalb der einfachen Anführungszeichen mit Ausnahme des Anführungszeichens verhindern.
Einfache Anführungszeichen deaktivieren die spezielle Bedeutung von $ in einem Skript.
#!/bin/bash
echo "$PATH"
Funktioniert!
#!/bin/bash
echo '$PATH'
Funktioniert nicht! Ausgabe bleibt gleich wie Eingabe