2016-11-19 2 views
1

Я пытаюсь создать небольшой скрипт оболочки в Solaris, который проверяет количество соединений в месяц для текущего вошедшего в систему пользователя, но у меня возникают проблемы в с помощью переменной внутри команды в правильном направлении.сценарий оболочки Solaris, как использовать переменную внутри команды

Это мой сценарий:

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

Вы можете передать переменные AWK с помощью опции -v, например:

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 Какую версию 'awk' для Solaris вы используете? Существует множество различных версий 'awk' для обычной установки Solaris. По умолчанию он довольно старый. –

+0

@Andrew Henle У этого есть версия соло. – Manos