As expansões da chave Bash podem gerar os números com zeros à esquerda ( desde o bash 4.0 alpha + ~ 2009-02-20 ):
$ echo {001..023}
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023
Então, você pode fazer:
for a in {001..218}; do echo "bvrprdsve$a; $(ssh -q bvrprdsve$a "echo \$(free -m|grep Mem|/bin/awk '{print \}';free -m|grep Swap|/bin/awk '{print \}')")"; done >> /tmp/svemem.txt
Mas, vamos olhar dentro do comando um pouco:
-
Você está chamando free duas vezes, usando grep e then awk:
free -m|grep Mem |/bin/awk '{print \}'; free -m|grep Swap|/bin/awk '{print \}'
Tudo pode ser reduzido para esta chamada para
free
eawk
:free -m|/bin/awk '/Mem|Swap/{print \}'
-
Além disso, o comando interno pode ser reduzido para este valor:
cmd="echo \$(free -m|/bin/awk '/Mem|Swap/{print \}')"
Então, todo o script ficará assim:
b=bvrprdsve;
f=/tmp/svemem.txt;
cmd="echo \$(free -m|/bin/awk '/Mem|Swap/{print \}')";
for a in {001..218}; do echo "$b$a; $(ssh -q "$b$a" "$cmd")"; done >> "$f";