Bram Moolenaar | 7d0dbd0 | 2023-06-24 00:56:50 +0100 | [diff] [blame] | 1 | #!/bin/dash |
Bram Moolenaar | 1aa5f1c | 2023-06-22 21:57:51 +0100 | [diff] [blame] | 2 | # Test file to test 'for do done' loops. |
| 3 | # You can start this script like: $0 {-ne -gt -le ...} (all numeric operators |
| 4 | # are allowed! |
| 5 | |
| 6 | # All this works and should be OK |
| 7 | |
| 8 | ################################################################################ |
| 9 | # |
| 10 | # For loop without 'in list'. Uses $1 $2 ... This is a special case! |
| 11 | # This 'for Var, do, done' is a very handy solution AND no real replacement |
| 12 | # available! |
| 13 | # |
| 14 | Function1 () { |
| 15 | |
| 16 | echo "Function1: for loop inside a function:\t\c" |
| 17 | [ "$*" ] || echo "none\c" |
| 18 | |
| 19 | for Var |
| 20 | do |
| 21 | [ 1 $Var 2 ] && echo "OK \c" || echo "no \c" |
| 22 | done |
| 23 | echo |
| 24 | |
| 25 | } # End of Function1 |
| 26 | |
| 27 | ################################################################################ |
| 28 | # |
| 29 | # For loop with 'in list' $* |
| 30 | # |
| 31 | Function2 () { |
| 32 | |
| 33 | echo "Function2: for loop inside a function:\t\c" |
| 34 | for Var in $* |
| 35 | do |
| 36 | [ 1 $Var 2 ] && echo "OK \c" || echo "no \c" |
| 37 | done ; echo |
| 38 | |
| 39 | } # End of Function2 |
| 40 | |
| 41 | ################################################################################ |
| 42 | # |
| 43 | # For loop with 'in list' $@. Works the same way as $* |
| 44 | # |
| 45 | Function3 () { |
| 46 | |
| 47 | echo "Function3: for loop inside a function:\t\c" |
| 48 | for Var in $@ |
| 49 | do |
| 50 | [ 1 $Var 2 ] && echo "OK \c" || echo "no \c" |
| 51 | done ; echo |
| 52 | |
| 53 | } # End of Function3 |
| 54 | |
| 55 | ################################################################################ |
| 56 | # |
| 57 | # For loop with 'in list' "$@". Special case. Works like "$1" "$2" ... |
| 58 | # |
| 59 | Function4 () { |
| 60 | |
| 61 | echo "Function4: for loop inside a function:\t\c" |
| 62 | for Var in "$@" |
| 63 | do |
| 64 | [ 1 $Var 2 ] && echo "OK \c" || echo "no \c" |
| 65 | done ; echo |
| 66 | |
| 67 | } # End of Function4 |
| 68 | |
| 69 | |
| 70 | ################################################################################ |
| 71 | # main ### main ### main ### main ### main ### main ### main ### main ### main # |
| 72 | ################################################################################ |
| 73 | # |
| 74 | # Here is the heart of this script: |
| 75 | # |
THARAK HEGDE | 4c0089d | 2023-07-09 02:38:28 +0100 | [diff] [blame] | 76 | echo "Processing the following command line arguments: ${*:-none}" |
Bram Moolenaar | 1aa5f1c | 2023-06-22 21:57:51 +0100 | [diff] [blame] | 77 | echo "Script: for loop outside a function:\t\c" |
| 78 | for Var |
| 79 | do |
| 80 | [ 1 $Var 2 ] && echo "OK \c" || echo "no \c" |
| 81 | done ; echo |
| 82 | |
| 83 | # Same as function calls |
| 84 | Function1 -eq -ne -gt -ge -le -lt |
| 85 | Function2 -eq -ne -gt -ge -le -lt |
| 86 | Function3 -eq -ne -gt -ge -le -lt |
| 87 | Function4 -eq -ne -gt -ge -le -lt '-ge 1 -a 2 -ge' |
| 88 | |
| 89 | # Now the same call like Function4 but with Function1 |
| 90 | Function1 -eq -ne -gt -ge -le -lt '-ge 1 -a 2 -ge' |
| 91 | Function1 |
| 92 | |
| 93 | exit $? |