Quem | script awk Bash

0

Estou recebendo o seguinte erro ao tentar executar meu script:

./watchuser: line 12: syntax error near unexpected token 'echo'
./watchuser: line 12: 'echo ("$User online since:" who| awk ' { print "User: " $1" -    Terminal: "$2" - Login @ " $3" "$4}') '

Aqui está o meu script, é para mostrar aos usuários que estão online no formato Epoch.

#!/bin/bash
for User in $(cd /home;ls --hide=lost+found)do
echo ("$User online since:" who| awk ' { print "User: " $1" - Terminal: "$2" - $
NOW=$ ( date +%s -d "Jan 1, 1980 00:00:01")
USR=$ ( who |awk ' {print $1, ":",$5,$6,$9 } ' | grep $U)
USRDATE=$(echo $USR | cut -d ":" -f2)
(( USRDATE = $(date --date "$USRDATE" +%s) / 86400 ))
(( NOW = NOW/86400 ))
(( DAYS = NOW - USRDATE ))
done
    
por Macenbro 27.09.2013 / 18:41

1 resposta

2

Sim, claro que você recebe erros. Seu roteiro está uma bagunça. Não consigo entender exatamente o que você pretende fazer, mas talvez essa variante lhe dê uma ideia de onde você está errado:

#!/bin/bash

for User in $(cd /home;ls --hide=lost+found); do
    echo "$User online since:" 
    who | awk '{ print "\tUser: "$1" - Terminal: "$2" - "$3" "$4}'
    NOW=$(date +%s -d "Jan 1, 1980 00:00:01")
    USR=$(lastlog |awk ' {print $1, ":",$5,$6,$9 } ' | grep $User)
    USRDATE=$(echo $USR | cut -d ":" -f2)
    (( USRDATE = $(date --date "$USRDATE" +%s) / 86400 ))
    (( NOW = NOW/86400 ))
    (( DAYS = NOW - USRDATE ))
done
    
por Radu Rădeanu 27.09.2013 / 19:03