Ваша проблема в том, что Tcl придает никакой особый смысл символу '
.Он использует {
… }
(который лучше гнездится) для той же цели.Ваша команда:
exec cat cells.txt | awk ' $1 ~ /^$b/ '
должна стать:
exec cat cells.txt | awk { $1 ~ /^$b/ }
Кроме ... вы также хотите, чтобы в ней была подставлена $b
(но не $1
),Самый простой способ сделать это с помощью format
:
exec cat cells.txt | awk [format { $1 ~ /^%s/ } $b]
Было бы более оптимальным опустить использование cat
здесь:
exec awk [format { $1 ~ /^%s/ } $b] <cells.txt
Вы находитесьПомните, что весь ваш скрипт может быть написан на чистом Tcl без использования exec
?