我创建了这个命令,并希望将其放入变量中。
sort -k 1,1 | tr " " "\n" | users | wc -l
然而,如下所示,到目前为止,输出会产生错误并且无法正常工作
us_num=$(users | tr " " "\n" | sort -k 1,1 | wc -l)
echo "Currently there is $(us_num) number of users on the server."
有任何想法吗?
答案1
$(us_num)
是一个命令替换,它将运行该命令us_num
并将被该命令的输出替换。
要插入的值多变的 us_num
,$us_num
改为使用:
printf 'There are currently %d number of users on the server\n' "$us_num"
另请注意,您提到的第一个管道的命令位置乱序。该users
命令将忽略来自 的输入tr
,并sort
等待来自终端的输入。
wc -w
正如评论中提到的,您还可以通过使用(计算单词数)来缩短管道:
printf 'There are currently %d number of users on the server\n' "$(users|wc -w)"