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,shell 执行分词。这意味着所有空白字符(例如换行符)都将替换为 IFS 中的第一个字符(默认情况下:空格)。如果您想保留换行符,请使用双引号。

相关内容