2016-11-19 106 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