args() { name=$1; shift printf '%s:\t%d:\t' "$name" "$#" printf '<%s>' "$@" printf '\n' } IFS=' ,' S=' ' C=',' W='abc' SW=' abc' WS='abc ' SWS=' abc ' CW=',abc' WC='abc,' CWC=',abc,' WSW='abc def' WSSW='abd def' WCW='abc,def' WCCW='abc,,def' WSCW='abc ,def' WCSW='abc, def' WSCSW='abc , def' WSCSCSW='abc , , def' WSCSCSWS='abc , , def ' WSCSCSWC='abc , , def,' SS=' ' SSS=' ' CC=',,' CCC=',,,' SC=' ,' CS=', ' SCCS=' ,, ' CSSC=', ,' SCWSCWCS=' ,abc ,def, ' SSCSSCSSCSS=' , , , ' args W $W args SW $SW args WS $WS args SWS $SWS args CW $CW args WC $WC args CWC $CWC args WSW $WSW args WSSW $WSSW args WCW $WCW args WCCW $WCCW args WSCW $WSCW args WCSW $WCSW args WSCSW $WSCW args WSCSCSW $WSCSCSW args WSCSCSWS $WSCSCSWS args WSCSCSWC $WSCSCSWC args S $S args C $C args SS $SS args SSS $SSS args CC $CC args CCC $CCC args SC $SC args CS $CS args SCCS $SCCS args CSSC $CSSC args SCWSCWCS $SCWSCWCS args SSCSSCSSCSS $SSCSSCSSCSS args pW p${W} args pSW p${SW} args pWS p${WS} args pSWS p${SWS} args pCW p${CW} args pWC p${WC} args pCWC p${CWC} args pWSW p${WSW} args pWSSW p${WSSW} args pWCW p${WCW} args pWCCW p${WCCW} args pWSCW p${WSCW} args pWCSW p${WCSW} args pWSCSW p${WSCW} args pWSCSCSW p${WSCSCSW} args pWSCSCSWS p${WSCSCSWS} args pWSCSCSWC p${WSCSCSWC} args pS p${S} args pC p${C} args pSS p${SS} args pSSS p${SSS} args pSC p${SC} args pCS p${CS} args pCSSC p${CSSC} args pSSS p${SSS} args pCCC p${CCC} args pSCCS p${SCCS} args pSCWSCWCS p${SCWSCWCS} args pSSCSSCSSCSS p${SSCSSCSSCSS} args Wq ${W}q args SWq ${SW}q args WSq ${WS}q args SWSq ${SWS}q args CWq ${CW}q args WCq ${WC}q args CWCq ${CWC}q args WSWq ${WSW}q args WSSWq ${WSSW}q args WCWq ${WCW}q args WCCWq ${WCCW}q args WSCWq ${WSCW}q args WCSWq ${WCSW}q args WSCSWq ${WSCW}q args WSCSCSWq ${WSCSCSW}q args WSCSCSWSq ${WSCSCSWS}q args WSCSCSWCq ${WSCSCSWC}q args Sq ${S}q args Cq ${C}q args SSq ${SS}q args SSSq ${SSS}q args SCq ${SC}q args CSq ${CS}q args CSSCq ${CSSC}q args SSSq ${SSS}q args CCCq ${CCC}q args SCCSq ${SCCS}q args SCWSCWCSq ${SCWSCWCS}q args SSCSSCSSCSSq ${SSCSSCSSCSS}q args pWq p${W}q args pSWq p${SW}q args pWSq p${WS}q args pSWSq p${SWS}q args pCWq p${CW}q args pWCq p${WC}q args pCWCq p${CWC}q args pWSWq p${WSW}q args pWSSWq p${WSSW}q args pWCWq p${WCW}q args pWCCWq p${WCCW}q args pWSCWq p${WSCW}q args pWCSWq p${WCSW}q args pWSCSWq p${WSCW}q args pWSCSCSWq p${WSCSCSW}q args pWSCSCSWSq p${WSCSCSWS}q args pWSCSCSWCq p${WSCSCSWC}q args pSq p${S}q args pCq p${C}q args pSSq p${SS}q args pSSSq p${SSS}q args pSCq p${SC}q args pCSq p${CS}q args pCSSCq p${CSSC}q args pSSSq p${SSS}q args pCCCq p${CCC}q args pSCCSq p${SCCS}q args pSCWSCWCSq p${SCWSCWCS}q args pSSCSSCSSCSSq p${SSCSSCSSCSS}q