как передать вывод оператора эха в качестве аргумента функции?

Я просто хочу передать вывод оператора echo в качестве аргумента ( $ {1} ) в функцию регистратора в следующем примере:

logfile=./testlog

`touch ${logfile}`

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

echo "started executing script" | logger
-1
13.01.2017, 01:43
1 ответ

В сторону: 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

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

1
28.01.2020, 05:10

Теги

Похожие вопросы