Расширения фигурных скобок Bash могут генерировать числа с ведущими нулями ( начиная с 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
Итак, вы можете сделать:
for a in {001..218}; do echo "bvrprdsve$a; $(ssh -q bvrprdsve$a "echo \$(free -m|grep Mem|/bin/awk '{print \$4}';free -m|grep Swap|/bin/awk '{print \$4}')")"; done >> /tmp/svemem.txt
Но давайте немного заглянем внутрь команды:
Вы дважды вызываете free, используя grep, а затем awk:
free -m | grep Mem | / bin / awk ' {print \ $ 4} ';
free -m | grep Swap | / bin / awk' {print \ $ 4} '
Все можно свести к одному вызову free
и awk
:
free -m | / bin / awk '/ Mem | Swap / {print \ $ 4}'
Кроме того, внутренняя команда могла быть уменьшено до этого значения:
cmd = "echo \ $ (free -m | / bin / awk '/ Mem | Swap / {print \ $ 4}')"
Затем весь сценарий будет выглядеть так:
b=bvrprdsve;
f=/tmp/svemem.txt;
cmd="echo \$(free -m|/bin/awk '/Mem|Swap/{print \$4}')";
for a in {001..218}; do echo "$b$a; $(ssh -q "$b$a" "$cmd")"; done >> "$f";
Решение, которое я принял:
if svn diff -r BASE:HEAD./doc/guidelines/typesetter-guidelines.tex | grep -q ^
then echo "Out of date"
else echo "Updated"
fi
Есть ли противопоказания? Могу ли я сделать лучше, чем это?