Кто у нас тут специалист по шелл-скриптингу? Подскажите, плиз. Нужно по ФТП утаскивать один файл из каталога. Самый последний по дате. Файлов в каталоге много. Если критично - os Sun Solaris.
Чтобы прервать цикл. Нужен только самый последний по дате файл. То есть в данном исходнике - самый первый в списке, формируемом $(ls -t -1)
Ну, на здоровье. Только сначала выполни то, что написал под Солярисом. И вообще-то нужно было не удалять, а получить последний файл, с которым что-то потом делать.
ладно без обид ok ? любым из клонов sh (будь то сам sh, bash или ksh) после выполнения: FILENAME=`ls -t1|head -1` пременная FILENAME будет содержать то, что тебе нужно ;-) другими словами весь твой скрипт можно переписать (с моей точки зрения) в виде: --------------------------------- #!/bin/ksh rm lastbackup ln -s `ls -t1|head -1` lastbackup --------------------------------- что касается конструкции $(bla-bla), то она не совсем всегда делает то, что нужно вместо нее лучше использовать `bla-bla` - так надежнее и одинаково интерпретируется разнвми *sh что касается sun solaris, то я уже около 2-х лет пишу под эту платформу и не только на sh/bash/ksh еще вопросы ?
После некоторых размышлений решил, что, к сожалению, все вышеперечисленные методы не годятся. В изначальной постановке вопроса не учтено (точнее не озвучено) что пополнение директории процесс динамический - т.е. вполне можно получив последний по времени файл попасть на тот, которой в данный момент записывается и следовательно inconsistent. В этом случае нужно брать предидущий. С одной стороны, проще всего было бы создавать линк на последний файл именно в том процессе, который его создает. После завершения. Это реализуемо. Но тогда возникает другой вопрос - как поведет себя процесс, создающий линк, если в этот момент подлинкованый файл копируется по фтп?
Rem, я с тебя дивлюсь! Ну возьми напиши маленькую прогу на Си. Займет 10 строк. Или у тебя компилятора нету.
Нету там компилятора, нету. Насколько я помню, он в солярисе по умолчанию не ставится. А может админ не поставил. Короче - нету. Проект удаленный (ну очень удаленный... telnet & vi - все что имею) И тот, кто отвечает за админство и скриптинг куда-то провалился...
я так понимаю, что ты имеешь ввиду, что предыдущий файл копируется по ftp. если ты изменишь символическую ссылку на другой файл в момент копирования, то у тебя все равно скопируется старый файл - собственно имя файла используется только в начале процесса копирования - чтобы определить inode а вот если ты сотрешь старый файл, то будет геморрой
в комплекте с solaris компилятор вообще не поставляется нужно либо брать gcc с компаньён CD, либо брать сановский компилятор (это называется Sun WorkShop или Forte) и 30-дневную лицензию к нему, либо (что лучше) собрать gcc самому там