Я все еще новичок в кормлении из бутылочки, так что полегче. Я гуглил себя так далеко, но не могу найти ответ.
Я запускаю программу, которая выводит данные CSV, и передает его в log.csv
Я ищу способ, чтобы вывод по конвейеру содержал дату / время, когда он был создан.
Прямо сейчас команда выглядит так (hand key'd каждое утро, пока нет crontab, пока я не получу эту работу)
rtlamr -format=csv -msgtype=scm | tee /home/jonboy545/energy/logs/3-16-18_7_30.csv
Я использую | tee
, так что я все еще могу видеть вывод на терминал, а также войти в файл.
Итак, как я могу направить вывод в динамическое имя файла? У меня есть простой сценарий bash, который будет выводить текст, но как мне сказать rtlamr | скрипт bash для генерации имени файла?
Вот скрипт с именем "log_energy.sh" для создания имени текстового файла:
#!/bin/bash
today=`date '+%m_%d__%H_%M_%S'`;
filename="/home/jonboy545/energy/logs/$today.csv"
echo $filename;
Если вы запустите ./log_energy.sh
то он просто выведет текст, который вы ожидаете:
/home/jonboy545/energy/logs/03_16__17_30_39.csv
Так что мое глупое мышление что-то вроде этого (что, очевидно, не работает)
rtlamr -format=csv -msgtype=scm | tee /home/jonboy545/./log_energy.sh
Теперь, когда я думаю об этом, может быть проще создать скрипт, который делает все это. Так как то так?
#!/bin/bash
today=`date '+%m_%d__%H_%M_%S'`;
filename="/home/jonboy545/energy/logs/$today.txt"
/usr/bin/rtlamr -format=csv -msgtype=scm | tee $filename;
Думая, что я, возможно, только что ответил на свой собственный пост, но я уверен, что скрипт выше что-то не так с ним.