#!/bin/bash function testfunc () { echo '(1) $0 is:' $0 echo '(2) $1 is:' $1 echo '(3) $2 is:' $2 echo '(4) $3 is:' $3 echo '(5) $# is:' $# echo '(6) $@ is:' $@ echo '(7) $* is:' $* echo '(8) ${1+"$@"} is:' ${1+"$@"} echo '(9) ${@: 1: 2} is:' ${@: 1: 2} echo '(10) echo $@ by "for" loop:' for i in $@; do echo ' '$i done echo '(11) echo $* by "for" loop:' for i in $*; do echo ' '$i done echo '(12) echo "$@" by "for" loop:' for i in "$@"; do echo ' '$i done echo '(13) echo "$*" by "for" loop:' for i in "$*"; do echo ' '$i done echo '(14) echo ${1+"$@"} by "for" loop:' for i in ${1+"$@"}; do echo ' '$i done echo 'return 88' echo '---going out of function---' return 88 } echo '### positional parameters ###' echo 'command: testfunc one two three' echo '---here inside function---' testfunc one two three echo '$? is:' $? echo 'doing echo' echo '$? is:' $? echo exit 0