Я делаю сценарий bash для резервного копирования своей базы данных ежедневно (в Mac OS X) и хочу сохранить 7 последних каталогов резервных копий. Вот проблемный фрагмент моего скрипта (для перечисления всего, кроме самых новых каталогов):
# Assigning a value to a variable named NUMBEROFFOLDERS.
NUMBEROFFOLDERS=7
# Command that leaves the newest NUMBEROFFOLDERS and removes everything else.
TOBEDELETED=`(ls -t|head -n $(($NUMBEROFFOLDERS));ls)|sort|uniq -u|sed -e 's,.*,"&",g'|xargs rm -rfv`
# Executing the TOBEDELETED command.
eval "$TOBEDELETED"
PS Команда, назначенная в TOBEDELETED, работает, когда я вхожу в окно терминала, но когда я запускаю скрипт, ничего не происходит.
РЕДАКТИРОВАТЬ: i) Сценарий должен перечислять все каталоги в определенном месте назначения дважды по-разному; sort должен их проанализировать, и только самые новые каталоги будут удалены из списка; sed должен обрабатывать все пробелы правильно, а rm -rfv удалит все каталоги из списков (каталоги, которые нужно удалить) со всеми их файлами.
ii) Скрипт должен оставлять новейшие папки $ NUMBEROFFOLDERS.
iii) я не получил ошибку. Я считаю, что проблема заключается в том, когда я ссылаюсь на переменную назначенной команды.