como passar a saída da instrução echo como argumento para funcionar?

como passar a saída da instrução echo como argumento para funcionar?

Eu só quero passar a saída da instrução echo como argument( ${1}) para a função logger no exemplo a seguir:

logfile=./testlog

`touch ${logfile}`

function logger(){
  echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}

echo "started executing script" | logger

Responder1

Além: loggeré um utilitário padrão Unix (POSIX). Você pode escolher um nome diferente para evitar confusão.

Paraprogramavocê poderia usar | xargs -d '\n' logger. Isso incluiria o caso em que você reescreve sua função como um arquivo de script, com a linha 'shebang', se necessário; no entanto, pode ser difícil obter todo o ambiente correto para esse script.

Para uma função, a única maneira de passar um argumento é passando um argumento. Você poderia escrever uma segunda função que envolva sua primeira função, que renomearei logger1:

logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }

echo this is some log info | logger2

ou você pode simplesmente ter sua função readcomo entrada em primeiro lugar. Você pode até codificar um loop e fazer com que ele lide com várias linhas, se fornecido, como fazem os recursos reais de registro na maioria dos sistemas.

Responder2

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"

informação relacionada