Для отслеживания исполнения вашего скрипта используйте
set -x
Это заставит оболочку выводить значения так, как их видит интерпретатор, строка за строкой ... однако, в этом случае, это не говорит вам слишком много:
$ cat /tmp/test.sh
set -x
if [ -f $1 ]
then
echo "Are you sure you want to delete $1? Y for yes, N for no"
read choice
if [ $choice="Y" ]
then
echo "okay"
else
echo "file was not deleted"
fi
fi
$ bash /tmp/test.sh
+ '[' -f ']'
+ echo 'Are you sure you want to delete ? Y for yes, N for no'
Are you sure you want to delete ? Y for yes, N for no
+ read choice
N
+ '[' N=Y ']'
+ echo okay
okay
Ну ... на самом деле, это буквально говорит вам, что '[$ choice = "Y"] "неверно, но не говорит вам, почему это неправильно или как это исправить.