Я просто хочу передать вывод оператора echo в качестве аргумента ( $ {1}
) в функцию регистратора в следующем примере:
logfile=./testlog
`touch ${logfile}`
function logger(){
echo "[${USER}] [$nowTimestamp] [INFO] ${1}" >> ${logfile}
}
echo "started executing script" | logger
В сторону: logger
- это стандартная утилита Unix (POSIX). Вы можете выбрать другое имя, чтобы избежать путаницы.
Для программы вы можете использовать | xargs -d '\ n' регистратор
. Это может включать случай, когда вы переписываете свою функцию как файл сценария, с добавлением строки shebang, если это необходимо; однако получить все правильное окружение для этого сценария может быть сложно.
Для функции единственный способ передать аргумент - это передать аргумент. Вы можете написать вторую функцию, которая обертывает вашу первую функцию, которую я переименую в logger1
:
logger1(){ echo "... $1" >>$file; }
logger2(){ read -r x; logger1 "$x"; }
echo this is some log info | logger2
, или вы можете просто попросить вашу функцию прочитать
свой ввод в первую очередь. Вы даже можете закодировать цикл и заставить его обрабатывать несколько строк, если это предусмотрено, как это делают настоящие средства ведения журнала в большинстве систем.