oh indeed it doesnt do what you want maybe printf %q does sorry On Mon, Aug 23, 2021, 00:45 Alex fxmbsw7 Ratchev <fxmb...@gmail.com> wrote:
> i meant this with removing quotes > > ~ $ shopt -s extglob ; a=( . a \' \$var $'\e[1m' ) ps='$ ' a=( "${a[@]@Q}" > ) ; for i in ${!a[@]} ; do a[i]=${a[i]#?(\$)\'} a[i]=${a[i]%\'} ; done ; > ps+=${a[*]} ; printf %s\\n "$ps" > $ . a \ $var \E[1m > ~ $ > > On Mon, Aug 23, 2021, 00:02 Emanuele Torre <torreemanue...@gmail.com> > wrote: > >> Emanuele Torre <torreemanue...@gmail.com> wrote: >> > ~ --${@Q}-> '~' --${#\'}-> ~' --${%\'}-> ~ >> >> Sorry, that was a bad example. Still, it does not accomplish anything: >> >> \w --${@Q}-> '\w' --${#\'}-> \w' --${%\'}-> \w >> >> On Sun, 22 Aug 2021 at 23:56, Emanuele Torre <torreemanue...@gmail.com> >> wrote: >> > >> > Alex fxmbsw7 Ratchev <fxmb...@gmail.com> wrote: >> > > and renoving the beginning and ending ' s >> > >> > even if you remove the first and last ': >> > 1) that is 3 PEs as the solution i described (${a//\\/\\\\} >> > ${a//\`/\\\`} ${a//$/\\$} vs ${a@Q} ${a#\'} ${a%\'} ) >> > 2) it doesn't actually accomplish anything: >> > >> > ~ --${@Q}-> '~' --${#\'}-> ~' --${%\'}-> ~ >> > >> > On Sun, 22 Aug 2021 at 23:14, Alex fxmbsw7 Ratchev <fxmb...@gmail.com> >> wrote: >> > > >> > > what about @Q >> > > and renoving the beginning and ending ' s >> > > >> > > >> > > On Sun, Aug 22, 2021, 23:13 Emanuele Torre <torreemanue...@gmail.com> >> wrote: >> > >> >> > >> It would be nice to have a parameter transformation (e.g. "${par@p >> }") >> > >> that expands $par to a string that will not be expanded by PS1, PS2, >> &c. >> > >> >> > >> example: >> > >> >> > >> tmp_var=$(blabla) # this variable will not exist when PS1 is >> expanded >> > >> PS1="blabla ${tmp_var@p} blabla" >> > >> >> > >> I think a valid way to achieve the same behaviour in the currenct >> > >> version of bash: >> > >> >> > >> tmp_var=$(blabla) >> > >> tmp_var=${tmp_var//\\/\\\\} >> > >> tmp_var=${tmp_var//\`/\\\`} >> > >> tmp_var=${tmp_var//$/\\$} >> > >> PS1="blabla $tmp_var blabla" >> > >> >> > >> But a parameter transformation would be nicer. >> > >> >> > >> This parameter transformation should also make sure to not cause an >> > >> expansion when concatenated. >> > >> >> > >> var='$' >> > >> printf '%s\n' "${var@p}" # should not expand to `$'. >> > >> PS1="${var@P}(date)" # because this should expand to `$(date)' >> > >> # and not to the output of `date'. >> > >> >> > >> Cheers, >> > >> emanuele6 >> > >> >> >