Sorry to reply to myself, but forgot to illustrate. On +2022-06-20 12:12:10 +0200, b...@bokr.com wrote: > Hi Chris, [...] > > I have had some mystery bash parsing errors, and I noticed > set|less > shows a heck of a lot of functions defined that I don't > remember seeing in the past. > Anyway, shouldn't stuff like that have better hygiene than just prefixed > _underscore ? Or maybe set|less doesn't show all that on your system? >
There are a couple functions without prefixed underscore too, which invoke some underscore-prefixed ones that look too trusting of their arguments if you ask me: can someone declare these safe? I think I can grok quote () ... (escape single quotes and enclose result in single quotes, trusting bash state) But what if I want to define my own function quote?? How would I know I was overriding this? I really don't like my programming space occupied by unknowns :-( --8<---------------cut here---------------start------------->8--- quote () { local quoted=${1//\'/\'\\\'\'}; printf "'%s'" "$quoted" } --8<---------------cut here---------------end--------------->8--- but this one below will take more time than I want to spend on code I'm not intentionally going to use, and which invites name clashes in my command name space :-( --8<---------------cut here---------------start------------->8--- quote_readline () { local quoted; _quote_readline_by_ref "$1" ret; printf %s "$ret" } --8<---------------cut here---------------end--------------->8--- where the above calls this: --8<---------------cut here---------------start------------->8--- _quote_readline_by_ref () { if [ -z "$1" ]; then printf -v $2 %s "$1"; else if [[ $1 == \'* ]]; then printf -v $2 %s "${1:1}"; else if [[ $1 == ~* ]]; then printf -v $2 ~%q "${1:1}"; else printf -v $2 %q "$1"; fi; fi; fi; [[ ${!2} == \$* ]] && eval $2=${!2} } --8<---------------cut here---------------end--------------->8--- HTH somehow. -- Regards, Bengt Richter