Você não diz qual é o erro de sintaxe exato, mas parece que você tem um problema com o escape de aspas. Por exemplo, com cpscmd2
tendo todas as aspas duplas, quais devem ser as cotações inicial e final e quais cotações devem ser consideradas como parte do próprio comando? A maneira de passar aspas como parte do comando é escapá-las com \
:
set cpscmd2 "| grep -v \"//cps\" | grep -v \"cps := 4.1\" | grep -v \"cps := 2.2\" "
(Você também estava perdendo a citação aproximada no final.) Alternativamente, desde que você esteja usando strings literais, você poderia usar aspas simples para elas, tornando-a um pouco mais legível:
set cpscmd2 "| grep -v '//cps' | grep -v 'cps := 4.1' | grep -v 'cps := 2.2' "
Você também precisará escapar do sinal $
em cpscmd3
. Seu \r
final deve ser citado também.
Mas eu recomendaria deixar o comando awk manipular os valores que você não quer contar, especificamente omitindo-os da soma. Isso terminaria como:
set cpscmd1 "grep -i 'cps' traffic.cfg | grep -v '//cps' "
set cpscmd2 "| awk '\ !~ /4.1|2.2|5.1|7.4/ { SUM += \} END { print SUM}' "
...
exp_send "$cpscmd1 $cpscmd2 \r"