tail
работы с двоичными данными точно так же как с текстом. Если Вы хотите запуститься в самом начале файла, можно использовать tail -c +1 -f
.
Начальная настройка: touch 01-foo.sql 02-bar.sql 02-baz.sql 03-foo1.sql 04-buz.sql 09-quux.sql 10-lala.sql 99-omg.sql
Фактический код: curr=02; for file in ??-*.sql; do ver="${file:0:2}"; [ "$ver" -gt "$curr" ] && echo "$file"; done
Т.е. определите текущую версию, чтобы быть 02
и затем посмотрите на все файлы (globbing является алфавитным), выполняя их, если их префикс числа численно больше. Замена mysql
(или что имеет Вас) для echo
.
В zsh:
DB_VERSION=02
glob="<$((DB_VERSION+1))->"
for x in $~glob-*; do mysql <$x; done
<LOW-UP>
оператор шарика соответствует целым числам в диапазоне. Можно только использовать литеральное целое число, не результат вычисления. Следовательно, мы сначала создаем шаблон шарика как значение параметра, затем используем этот параметр в качестве шаблона шарика благодаря ~
опция расширения параметра.
[[ "08" -gt "07" ]] && echo y
производит[[: 08: value too great for base (error token is "08")
- Вы, вероятно, хотите придерживаться сравнения строк. – glenn jackman 11.10.2011, 18:34[[
вместо[
. Оба встроены, таким образом, я сразу не вижу преимущества использования[[
здесь. Я пропускаю что-то? – janmoesen 11.10.2011, 22:32[[
дополнительные операторы:==
и!=
сделайте сопоставление с образцом стиля шарика и=~
делает соответствие regex. Никакое разделение слова не выполняется в[[
, таким образом, существует меньше неожиданностей, если Вы забываете заключать переменные в кавычки. документация: gnu.org/software/bash/manual / … – glenn jackman 11.10.2011, 22:53[[
, можно сказать удару рассматривать числа как десятичное число независимо от продвижения 0:[[ "10#$ver" -gt "10#$curr" ]]
– glenn jackman 11.10.2011, 22:56[[
(вот почему я задался вопросом, почему это было предпочтительно здесь), кроме основного спецификатора. Аккуратный! – janmoesen 12.10.2011, 09:59