ok, I will try this. I am even a little excited when I found this "bug" 😜, but it turns out I should learn more details about bash :P
Get Outlook for Android<https://aka.ms/AAb9ysg> ________________________________ From: Andreas Kusalananda Kähäri <andreas.kah...@abc.se> Sent: Thursday, January 13, 2022 7:04:16 PM To: ju nan <kfg...@outlook.com>; bug-bash@gnu.org <bug-bash@gnu.org> Subject: Re: A bug when using bash shell variable On Thu, Jan 13, 2022 at 11:55:45AM +0100, Kusalananda Kähäri wrote: > > When you want to store several separate arguments, do not combine them > into a single string. > > Compare this > > args="-a 'hello world' -b '1 * 3'" > printf '"%s"\n' $args > > and > > args=( -a 'hello world' -b '1 * 3' ) > printf '"%s"\n' "${args[@]}" Portably, to shells without arrays: set -- -a 'hello world' -b '1 * 3' printf '"%s"\n' "$@" > Using an unquoted variable causes the shell to split the variable's > value on spaces, tabs, and newlines (by default, the values in the IFS > variable). The words generated from this also undergoes filename > globbing. This is not what you want to do. > > Instead, use an array to store the quoted arguments, and then make sure > that you properly quote the expansion of the array's elements when you > use it on the command line. > > The bug is in your code, not in bash. > > See also: > > https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary > https://unix.stackexchange.com/questions/444946/how-can-we-run-a-command-stored-in-a-variable > > (and others) > > > On Thu, Jan 13, 2022 at 10:13:05AM +0000, ju nan wrote: [cut] -- Andreas (Kusalananda) Kähäri SciLifeLab, NBIS, ICM Uppsala University, Sweden .