't' находится между двумя подрегексами: \ t
, что не интерпретируется как табуляция, а как t
. Таблица будет $ '\ t'
.
Попробуйте вместо этого:
$ msg=$'[4]\tthe message'
$ [[ "$msg" =~ (.+)$'\t'(.+) ]]
$ echo ${BASH_REMATCH[1]}
[4]
$ echo ${BASH_REMATCH[2]}
the message
Я могу зафиксировать вывод time
отдельно с подоболочкой без использования переменной для абстрагирования команды. Простой пример для краткости:
$ time ( echo "Hello" > example.out 2> example.err ) > time.out 2> time.err
$ ls *{out,err}
example.err example.out time.err time.out
$ cat time.err
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ cat example.out
hello