Вы можете использовать обратные пометки, чтобы назначить вывод команды переменной:
logfile=`echo $a | sed 's/.txt/.log/'`
Это предполагает, что вы используете Bash.
В качестве альтернативы, для этой конкретной проблемы в Bash есть шаблонсама совпадающая конструкция:
stem=$(textfile%%.txt)
logfile=$(stem).log
или
logfile=$(textfile/%.txt/.log)
% в последнем примере обеспечит замену только последнего .txt.