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. dd
ist Ihr Disc-Zerstörer, schauen Sie nach man dd
und 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 bash
Handbuchs auch nützlich:
man bash | sed -n '/^DEFINITIONS/,/^SHELL GRAMMAR/p' | less