변수에 대한 파이프된 명령 출력이 작동하지 않습니다.

변수에 대한 파이프된 명령 출력이 작동하지 않습니다.

다음을 시도하면 문제가 없습니다.

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

하지만 변수에 저장하려고 하면 아무것도 저장되지 않은 것 같습니다.

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

다음을 사용하지 않아도 동일한 결과를 얻을 수 있다는 것을 알고 있습니다 sed.

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

하지만 왜 작동하지 않는지 궁금합니다 sed.

답변1

명령을 변수 이름으로 사용하지 마십시오. dd디스크 파괴자라면 man dd다른 변수 이름이나 다음과 같은 이름을 찾아 시도해 보십시오.

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

아마도 매뉴얼의 이 부분 bash도 유용할 것입니다:

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

관련 정보