sh/for-array (391 bytes)
1 # Iterate over a saved argument list in POSIX sh 2 # Yes, it really is this hard to do 3 # and it is broken on GNU non-POSIX non-+ support. 4 save () { 5 for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 6 echo " " 7 } 8 9 old=$(save "$@") 10 set -- <++> 11 myarray=$(save "$@") 12 eval "set -- $myarray" 13 for i ; do <++> ; done 14 eval "set -- $old" 15 # Test: set -- foo bar baz boo