2016-11-19 105 views
1

我想创建一个小的shell脚本Solaris它检查当前登录用户每月的连接数,但我在有问题使用变量以正确的方式在命令内。Solaris shell脚本如何在命令中使用变量

这是我的脚本:

current_user=$(who am i | awk '{print $1}') 
echo The logins for user \"$current_user\" were: 
echo January: 
last | awk '$1=="${current_user}" && $5=="Jan" {count++} END {print count}' 
echo February: 
last | awk '$1=="${current_user}" && $5=="Feb" {count++} END {print count}' 
. 
. 
. 

和它打印:

The logins for user "username" were: 
January: 

February: 

. 
. 
. 

回答

2

您可以传递变量使用-v选项awk的,例如:

last | awk -vuser="$current_user" '$1==user && $5=="Jan" {count++} END {print count}' 

另外,你可以跳出单引号字符串:

last | awk '$1=="'"${current_user}"'" && $5=="Jan" {count++} END {print count}' 
+0

谢谢!第二种方法奏效,但我试图找出为什么第一种方法没有。 – Manos

+0

@Manos您正在使用哪个Solaris版本的awk?在正常的Solaris安装中有多个不同版本的'awk'。默认的一个很老。 –

+0

@Andrew Henle它有一个oawk版本。 – Manos