Советы по отладке, измените это:
echo "The current lvl is : $CURRENT_LVL and number of arguments is : $# "
echo "I am at line 10 . The command is $1"
На это:
echo "The current lvl is : $CURRENT_LVL and number of arguments is : $# "
echo "I am at line 10 . The command is \"$1\", the whole command line is \"$0 $@\""
Это не решит проблему, но обеспечитбольше информации о том, что на самом деле происходит.
#Main
можно упростить.Это ничего не решит, но об этом будет легче думать:
#### Main
case "${1,,}" in
"") echo "Entered no arguments."
case "$CURRENT_LVL" in
3|5) echo "Entered the if current level ${CURRENT_LVL} statement" ;;&
5) start ;;
3) stop ;;
esac ;;
start) if ! [ -e "$FILE" ] ; then
echo "I am the case statement.the command is $1"
start
fi ;;
stop) [ -e "$FILE" ] && stop ;;
*) echo "Please enter start or stop" ;;
esac
Обратите внимание на bash
isms .${1,,}
возвращает $1
в нижнем регистре.;;&
падает до следующего case
теста, а не прыгает до ecase
.