LINUX.ORG.RU

Bash - работа со списком названий файлов

 


0

2

Добрый день.

Код Bash:

#!/bin/bash
folder=/home/lily/My/log
cd $folder
read dm3</home/lily/My/dm3.txt
read d3</home/lily/My/d3.txt
EXT=log
for aa in `find -maxdepth 1 -name "*.${EXT}" | sed "s/\.${EXT}\$//"`; do
    if [ $aa -le d3 ]; then
        echo END1
    else
        echo END2
    fi
done
run.sh: line 11: [: ./20141016: integer expression expected
END2

Я так понимаю, переменная аа - не того формата, поэтому не может сравниваться с другой переменной. Помогите пожалуйста

P.S. Не совсем понятно, в какой теме задавать вопросы по bash, поэтому приношу извинения, если размещаю его не там где надо.



Последнее исправление: beastie (всего исправлений: 6)
Ответ на: комментарий от anonymous
#!/bin/bash -x
folder=/home/lily/My/log
cd $folder
read dm3</home/lily/My/dm3.txt
read d3</home/lily/My/d3.txt
EXT=log
for aa in `find -maxdepth 1 -name "*.${EXT}" | sed "s/\.${EXT}\$//"`; do
    if [ $aa -le d3 ]; then
        echo END1
    else
        echo END2
    fi

done

Результат
run.sh: 11: [: Illegal number: ./20141016
END2
islily
()
Ответ на: комментарий от islily

их ровно столько, сколько логов в папке

run.sh: 11: [: Illegal number: ./20141016
END2
run.sh: 11: [: Illegal number: ./20141015
END2
run.sh: 11: [: Illegal number: ./20141014
END2

..........

islily
()
Ответ на: комментарий от islily

а если так?

#!/bin/bash -x
folder=/home/lily/My/log
cd $folder
read dm3</home/lily/My/dm3.txt
read d3</home/lily/My/d3.txt
EXT=log
for aa in `find -maxdepth 1 -name "*.${EXT}" | sed "s,^.\/\(.*\)\.${EXT}\$,\1,"`; do
    if [ $aa -le d3 ]; then
        echo END1
    else
        echo END2
    fi
done

anonymous
()
Ответ на: комментарий от islily

отлично, минус одна ошибка, давай дальше, как уже не раз говорилось:

#!/bin/bash -x
folder=/home/lily/My/log
cd $folder
read dm3</home/lily/My/dm3.txt
read d3</home/lily/My/d3.txt
EXT=log
for aa in `find -maxdepth 1 -name "*.${EXT}" | sed "s,^.\/\(.*\)\.${EXT}\$,\1,"`; do
    if [ $aa -le $d3 ]; then
        echo END1
    else
        echo END2
    fi
done

anonymous
()
Ответ на: комментарий от anonymous

к d3 подставила $
и вроде отработал, сейчас ток проанализирую, правильно ли
во всех сроках мне выдал END1

islily
()
Ответ на: комментарий от anonymous

for aa in `find -maxdepth 1 -name «*.${EXT}» | sed «s,^.\/\(.*\)\.${EXT}\$,\1,»`; do

тут надо примерно так записывать:

for aa1 in *.$EXT; do
  aa="${aa1%$EXT}"

а вы написали быдлокод.

if [ $aa -le d3 ]; then

арифметика есть в bash:

if (( aa <= d3 )); then
emulek
()
Ответ на: комментарий от emulek

благодарю что поправили, на это и рассчитывал

anonymous
()
Ответ на: комментарий от islily

Я упустила его, сто раз перебирала этот скрипт, голова уже отказывается соображать

выполните команду: :>говноскрипт, и пишете с нуля. То, что вы тут написали никуда не годиться.

emulek
()
Ответ на: комментарий от islily

Мне еще писать его и писать..это только часть моего затупка

islily
()
Ответ на: комментарий от islily

Он работает и это главное

ССЗБ. Это он сейчас на этом локалхосте в данной фазе Луны «работает».

боюсь я его не перепишу

хочется ответить просто и по-русски. Но СППФ, я угадал? Тогда страдайте, и продолжайтедоказывать тезис о том, что женщина-программист не лучше кобылы.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.