Thomas Dickey dixit: >> source="`echo "$source" | sed -e 's%/$%%'`/" >> >> You m̲u̲s̲t̲ ̲n̲o̲t̲ use double quotes both outside and inside of an >> old-style command substitution: some shells pair them as >> "`echo " and " | sed -e 's%/$%%'`/" instead of nesting, and >> POSIX actively allows that. > >...actually the only time I've recall running into this one >was in a bug in bash - for scripts which ran properly with >SunOS 4 and Solaris. SunOS 4 is out of reach now :-)
If you consider it out of reach, you can use $(…) instead of `…` (and ${foo%bar}). People are going to want to backport, though… >> Can you not use source=${source%/}/ ? (Depends on where you >> want to run that script; I know BOW’s /bin/sh fails on that >> hard.) > >what is "BOW"? https://virtuallyfun.com/2023/12/08/bsd-on-windows-things-i-wish-i-knew-existed/ Its sh choked on “if false; then : ${foo#bar}; fi” with the most weird error messages, so merely parsing what amount of script to skip in a nōn-executed block. mksh now runs on BOW, so people can just use that, but it shows up from time to time. I’ve seen some other shell, I don’t remember which one, do that other “"`""`"” parsing, and for a bit it was touch-and-go on that one for which variant I’d use in mksh, as *that* one *is* permitted by POSIX. bye, //mirabilos -- Sometimes they [people] care too much: pretty printers [and syntax highligh- ting, d.A.] mechanically produce pretty output that accentuates irrelevant detail in the program, which is as sensible as putting all the prepositions in English text in bold font. -- Rob Pike in "Notes on Programming in C"