Если $1
- относительный путь, то после ввода cd
в $1
подстановочный знак в цикле for
будет бессмысленным. Я бы порекомендовал что-то более похожее на
cd $1
for f in *; do
...
done
Так как он будет принимать как относительные, так и абсолютные пути.
Более того, аргументы первого test
неверны. Каждый раз в цикле $ f будет содержать одно имя файла, поэтому ваш тест должен выглядеть как
if (test -f $f); then
Вы также повторяете это в своих echo
аргументах.
Следующее делает в основном то, что вы хотите, с небольшими изменениями в вашем скрипте.
#!/bin/bash
dirpath=$1
y=y
Y=Y
echo "changing directory '$dirpath' `cd $dirpath`"
for f in ./*; do
if (test -f $f); then
echo -n "remove file '$f' ?"
read answer
if (test $answer == $y) || (test $answer == $Y); then
echo "Processing $f file..."
rm $f
echo "file '$f' deleted "
else
echo "file '$f' not removed"
fi
else
echo 'not a file'
fi
done