У меня есть сценарий bash, чтобы добавить временную метку к каждой записи файла журнала, но я застрял в преобразовании ее в синтаксис оболочки korn. Я читал, что оболочка korn не похожа на подоболочку. Я попытался использовать функцию, но это не сработало. В частности, я попытался преобразовать всю строку exec
в синтаксис korn. Может кто-нибудь, пожалуйста, взгляните и помогите мне?Подстановка замещения процесса в ksh (для изменения stdout)
#!/usr/bin/bash
exec > >(
while read line ; do
echo "$(date '+%Y%m%d %H:%M:%S') ${line}"
done > n.log
) 2>&1
echo 'first line; should have an initial timestamp'
sleep 2
echo 'printed two seconds later, should have a timestamp with a comparable offset'
Посмотрите здесь ... http://unix.stackexchange.com/a/26797 –
Какие ** ** конкретные реализации КШ? Это был бы совсем другой ответ для подлинного Дэвида Корна ksh93 против mksh или pdksh. –
BTW, предоставленный код bash действительно, ** действительно ** неэффективен ('$ (date)' запускает подоболочку, а затем выполняет внешний подпроцесс в этой подоболочке - для выполнения каждой отдельной строки требуется много накладных расходов вывод). Если вы использовали современную версию (4.1? 4.2?) Bash с встроенной поддержкой strftime, встроенную в printf, вы могли бы значительно снизить эксплуатационные издержки этого фильтра. –