A saída do comando canalizado para a variável não funciona

A saída do comando canalizado para a variável não funciona

Quando tento o seguinte, não há problema:

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

Mas quando tento armazená-lo em uma variável parece que nada é armazenado:

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

Eu sei que posso obter o mesmo resultado não usando sed:

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

mas estou curioso para saber por que não funciona com sed.

Responder1

Não use comandos como nome de variável. ddé o seu destruidor de discos, veja man dde tente outro nome de variável ou algo parecido com isto:

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

Talvez esta parte do bashmanual também seja útil:

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

informação relacionada