coloque a instrução echo dentro da função.
logfile=./testlog
'touch ${logfile}'
function logger()
{
echo "$@"
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
logger "started executing scirpt"
Eu só quero passar a saída da instrução echo como argumento ( ${1}
) para a função logger no seguinte exemplo:
logfile=./testlog
'touch ${logfile}'
function logger(){
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
echo "started executing script" | logger
coloque a instrução echo dentro da função.
logfile=./testlog
'touch ${logfile}'
function logger()
{
echo "$@"
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
logger "started executing scirpt"
Demais: logger
é um utilitário Unix (POSIX) padrão. Você pode escolher um nome diferente para evitar confusão.
Para um programa você pode usar | xargs -d '\n' logger
. Isso inclui o caso em que você reescreve sua função como um arquivo de script, com a linha 'shebang', se necessário; no entanto, obter todo o ambiente correto para esse script pode ser difícil.
Para uma função, a única maneira de passar um argumento é passar um argumento. Você poderia escrever uma segunda função que envolve sua primeira função, a qual eu renomeio logger1
:
logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }
echo this is some log info | logger2
ou você poderia ter sua função read
sua entrada em primeiro lugar. Você pode até mesmo codificar um loop e fazer com que ele manipule várias linhas, se fornecidas, como os recursos de registro reais na maioria dos sistemas.
Tags shell-script function