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の最初の文字(デフォルト:空白)で置き換えられることを意味します。改行を維持するには、二重引用符を使用してください。

関連情報