Ausgabe des weitergeleiteten Befehls an die Variable funktioniert nicht

Ausgabe des weitergeleiteten Befehls an die Variable funktioniert nicht

Wenn ich Folgendes versuche, gibt es kein Problem:

$ date '+%y%m' | sed 's/.\(.*\)/\1/'
906

Aber wenn ich versuche, es in einer Variablen zu speichern, scheint nichts gespeichert zu sein:

$ dd=`date '+%y%m' | sed 's/.\(.*\)/\1/'`
$ echo "$dd"

Ich weiß, dass ich dasselbe Ergebnis erzielen kann, wenn ich Folgendes nicht verwende sed:

$ dd=`date '+%y%m'`
$ echo ${dd: -3}
906

aber ich frage mich, warum es mit nicht funktioniert sed.

Antwort1

Verwenden Sie keine Befehle als Variablennamen. ddist Ihr Disc-Zerstörer, schauen Sie nach man ddund versuchen Sie es mit einem anderen Variablennamen oder etwas wie diesem:

d=`date '+%y%m' | sed 's/.\(.*\)/\1/'`
echo $d

Vielleicht ist dieser Teil des bashHandbuchs auch nützlich:

man bash | sed -n '/^DEFINITIONS/,/^SHELL GRAMMAR/p' | less

verwandte Informationen