awk는 포장되지 않습니다

awk는 포장되지 않습니다

현재 로그인된 사용자(터미널당 로그인된 각 사용자)를 인쇄하려고 합니다. 이것이 내가 현재 가지고 있는 것입니다:

NOWDATE=$(date +"%Y-%m-%d")
NOWTIME=$(date +"%T")
USERS=$(who | awk -v nd="$NOWDATE"_"$NOWTIME" '{printf nd "\n" " User: "$1" Terminal: "$2" Login: "$3" "$4 "\n"}')

불행히도 \n작동하지 않습니다. 즉, 변수 다음에 개행 문자를 얻을 수 없습니다 $4. 출력에서는 새 줄을 실행하지 않습니다. printf변수 뒤에 줄 바꿈을 달성하는 방법은 무엇입니까 $4?

참고: 저는 사용자 목록을 표시하기 위해 echo를 실행하고 있습니다.echo $USERS

답변1

바꾸다

echo $USERS

그리고:

echo "$USERS"

in 과 같이 인용되지 않은 변수의 경우 echo $USERS쉘은 다음을 실행합니다.분사. 이는 모든 공백 문자(예: 개행 문자)가 IFS의 첫 번째 문자(기본값: 공백)로 대체됨을 의미합니다. 줄 바꿈을 유지하려면 큰따옴표를 사용하십시오.

관련 정보