Подскажите пожалуйста, почему скрипт не ждет ввода переменной b (bash)?

программирование Linux bash

вот сам скрипт:

for FOLDER in $FOLDERS; do

ls -1 $FOLDER | while read FILE; do
if [ -d "$FOLDER/$FILE" ]; then
echo '$FILE (y/n)'; read -s -n1 b
if [ "$b"="y" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi

if [ -f "$FOLDER/$FILE" ]; then
TIME=`stat -c %X "$FOLDER/$FILE"`
if [ "$TIME" -gt "1209600" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
done

done





всю голову сломал, не могу найти причину


Примечание:
вот весь скрипт. Мне нужна проверка... То есть, если $FILE - директория, то тогда скрипт должен меня спросить, че с ней делать, если $FILE - файл, то переместить не спрашивая.. Но скрипт спрашивать не собирается.. Не пойму, почему


#!/bin/bash
FOLDERS="$HOME/temp $HOME/temp/Downloads"
TRASH="$HOME/temp/TRASH"

# создаем директорию TRASH в $HOME/temp
if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi


for FOLDER in $FOLDERS; do

ls -1 $FOLDER | while read FILE; do
if [ -d "$FOLDER/$FILE" ]; then
echo 'переместить $FILE в корзину? (y/n)'; read b
if [ "$b"="y" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi

if [ -f "$FOLDER/$FILE" ]; then
TIME=`stat -c %X "$FOLDER/$FILE"`
if [ "$TIME" -gt "1209600" ]; then mv "$FOLDER/$FILE" "$TRASH"; fi
fi
done

done

exit 0

Примечание:
Спасибо Вам огромное! Вот, поправил:

#!/bin/bash
FOLDERS="$HOME/temp/rape_me"
mTIME=14 # время в днях
TRASH="$HOME/temp/TRASH"

if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi

((mTIME*=86400))

clear

for FOLDER in $FOLDERS; do

for FILE in $FOLDER/*; do
if [ -d "$FILE" ]; then
echo -e "mv \"$FILE\" in TRASH? (y/n) \c"
read -s -n1 OTVET
echo
if [ "$OTVET" = "y" ]; then
mv "$FILE" "$TRASH"
fi
fi

if [ -f "$FILE" ]; then
TIME=`stat -c %X "$FILE"`
if [ "$TIME" -gt "$mTIME" ]; then
mv "$FILE" "$TRASH"
fi
fi
done

done

exit 0



Хотелось бы услышать, что еще следовало бы поправить в скрипте?
Я сам не программист, но для себя писать простые программки нравится.

Родился этот скрипт после прочтения http://habrahabr.ru/blogs/linux/135731/
Сделал по-своему, так как скрипт, описанный в статье, из папок, содержащих большое кол-во маленьких файлов (html), вытащит все и кинет в общую папку, а html файл работать перестанет... В итоге получим еще более загроможденную папку TRASH. В статье, кстати, файлы сразу удаляются.

Хочу дописать этот скрипт, чтобы про папки он не спрашивал, а находил с помощью "find -atime" в папках самый новый файл и в зависимости от него решал, перемещать всю папку или нет...
Когда допишу - выложу, сегодня уже лень.

(^_^)

Примечание:
Невнимательно man читал...
' stat -c %X ' - это не то, что было нужно...(

Примечание:
Тут уже не разберешь ниче =), но кажется наконец проблема полностью решена. Данный скрипт работает и с папками и с файлами именно так, как было мне нужно.
Спасибо за помощь!

#!/bin/bash

FOLDERS="$HOME/temp/windows_files $HOME/temp/Downloads $HOME/temp"
TRASH="$HOME/temp/TRASH"

# сколько дней не открывался файл
diff=14

# прошло в сек с 1970г.
DATE_cur=`date +%s`

# создать папку TRASH, если не существует
if [ ! -d $TRASH ]; then
mkdir -p $TRASH
fi

# перевод в секунды
((diff*=86400))

clear

for FOLDER in $FOLDERS; do

for FILE in $FOLDER/*; do
DATE_open=`stat -c %X "$FILE"`
((DATE_diff=DATE_cur-DATE_open))
if [ "$DATE_diff" -gt "$diff" ]; then
mv "$FILE" "$TRASH"
fi
done

done

exit 0
Ответы:
у меня твой скрипт тоже не работает!
вот так работает:
В echo '... $FILE .. ' кавычки поменять на двойные
В if [ "$b"="y" ] обязательно нужны пробелы: if [ $b = y ]
Цикл лучше сделать как уже сказал коллега ранее
Лучше не грешить лишними ; - уменьшается читаемость скрипта
И для отладки в начале скрипта можно добавить set -x (чтобы меньше ломать голову)


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.