我正在尝试打印当前登录的用户(每个终端的每个登录用户)。这就是我目前所拥有的:
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 中的第一个字符(默认情况下:空格)。如果您想保留换行符,请使用双引号。