Argument kann im Bash-Datumsberechnungsskript nicht verwendet werden

Argument kann im Bash-Datumsberechnungsskript nicht verwendet werden

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

verwandte Informationen