Advertisement
Guest User

ask /r/bash on continue bug

a guest
Mar 23rd, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.80 KB | None | 0 0
  1. #!/bin/bash
  2. # Why doesn't the second method work?
  3. CONFIG_IS="manual" ; TEST_0="0" ; TEST_1="0" ; TEST_2="0" ; TEST_3="1" ; TEST_4="1" ; TEST_5="1" ; TEST_6="0" ; TEST_7="1" ; echo "Values:"
  4. echo -e "\$TEST_0=$TEST_0\n\$TEST_1=$TEST_1\n\$TEST_2=$TEST_2\n\$TEST_3=$TEST_3\n\$TEST_4=$TEST_4\n\$TEST_5=$TEST_5\n\$TEST_6=$TEST_6\n\$TEST_7=$TEST_7"
  5. TEST_PROGRESS="0" ; ORIGINAL_LOOP="0" ; echo "THIS METHOD WORKS:"
  6. while [ "$TEST_PROGRESS" -le 7 ] ; do
  7.     echo "Looping $ORIGINAL_LOOP" ; SKIP_ROUND="0"
  8.     if [[ "$CONFIG_IS" = "manual" ]] ; then
  9.         case "$TEST_PROGRESS" in
  10.         0 ) [ "$TEST_0" -eq 0 ] && SKIP_ROUND="1" ;;
  11.         1 ) [ "$TEST_1" -eq 0 ] && SKIP_ROUND="1" ;;
  12.         2 ) [ "$TEST_2" -eq 0 ] && SKIP_ROUND="1" ;;
  13.         3 ) [ "$TEST_3" -eq 0 ] && SKIP_ROUND="1" ;;
  14.         4 ) [ "$TEST_4" -eq 0 ] && SKIP_ROUND="1" ;;
  15.         5 ) [ "$TEST_5" -eq 0 ] && SKIP_ROUND="1" ;;
  16.         6 ) [ "$TEST_6" -eq 0 ] && SKIP_ROUND="1" ;;
  17.         7 ) [ "$TEST_7" -eq 0 ] && SKIP_ROUND="1" ;;
  18.         esac
  19.         if [ "$SKIP_ROUND" -eq 1 ] ; then
  20.             ((TEST_PROGRESS++))
  21.             continue
  22.         fi
  23.     fi
  24.     case "$TEST_PROGRESS" in
  25.     0 | 1 | 2 | 3 ) TEST_TYPE="A" ;;
  26.     4 | 5 | 6 | 7 ) TEST_TYPE="B" ;;
  27.     esac
  28.     TEST_TYPE="$TEST_PROGRESS-$TEST_TYPE"
  29.     echo -e "\$TEST_PROGRESS is $TEST_PROGRESS (original: $ORIGINAL_LOOP)\n\$TEST_TYPE     is $TEST_TYPE"
  30.     ((ORIGINAL_LOOP++)) ; ((TEST_PROGRESS++))
  31. done
  32. echo "Loop ended."
  33. CONFIG_IS="manual" ; TEST_0="0" ; TEST_1="0" ; TEST_2="0" ; TEST_3="1" ; TEST_4="1" ; TEST_5="1" ; TEST_6="0" ; TEST_7="1" ; echo "Values:"
  34. echo -e "\$TEST_0=$TEST_0\n\$TEST_1=$TEST_1\n\$TEST_2=$TEST_2\n\$TEST_3=$TEST_3\n\$TEST_4=$TEST_4\n\$TEST_5=$TEST_5\n\$TEST_6=$TEST_6\n\$TEST_7=$TEST_7"
  35. TEST_PROGRESS="0" ; ORIGINAL_LOOP="0" ; echo "THIS METHOD DOES NOT WORK:"
  36. while [ "$TEST_PROGRESS" -le 7 ] ; do
  37.     echo "Looping $ORIGINAL_LOOP"
  38.     if [[ "$CONFIG_IS" = "manual" ]] ; then
  39.         case "$TEST_PROGRESS" in
  40.         0 ) [ "$TEST_0" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;; # count increment is performed but not continue..?
  41.         1 ) [ "$TEST_1" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;; # I also tried: if [ ...] ; then ((T++)) && continue ; fi ;;
  42.         2 ) [ "$TEST_2" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  43.         3 ) [ "$TEST_3" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  44.         4 ) [ "$TEST_4" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  45.         5 ) [ "$TEST_5" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  46.         6 ) [ "$TEST_6" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  47.         7 ) [ "$TEST_7" -eq 0 ] && (( TEST_PROGRESS++ )) && continue ;;
  48.         esac
  49.     fi
  50.     case "$TEST_PROGRESS" in
  51.     0 | 1 | 2 | 3 ) TEST_TYPE="A" ;;
  52.     4 | 5 | 6 | 7 ) TEST_TYPE="B" ;;
  53.     esac
  54.     TEST_TYPE="$TEST_PROGRESS-$TEST_TYPE"
  55.     echo -e "\$TEST_PROGRESS is $TEST_PROGRESS (original: $ORIGINAL_LOOP)\n\$TEST_TYPE     is $TEST_TYPE"
  56.     ((ORIGINAL_LOOP++)) ; ((TEST_PROGRESS++))
  57. done
  58. echo "Loop ended."
  59. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement