Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14836 > unrolled thread

Another ^A bug

Started byMartijn Dekker <martijn@inlv.org>
First post2018-11-20 18:24 +0100
Last post2018-11-20 18:24 +0100
Articles 1 — 1 participant

Back to article view | Back to gnu.bash.bug


Contents

  Another ^A bug Martijn Dekker <martijn@inlv.org> - 2018-11-20 18:24 +0100

#14836 — Another ^A bug

FromMartijn Dekker <martijn@inlv.org>
Date2018-11-20 18:24 +0100
SubjectAnother ^A bug
Message-ID<mailman.4314.1542734655.1284.bug-bash@gnu.org>
That ^A / $'\1' character just keeps causing trouble...

This is a bug with IFS. Including a $'\1' character anywhere in IFS 
causes expansions in shell assignments to discard that character.

$ bash -c "c=$'Y\1Y';
     for IFS in $'\1' $'\2' $'x\1' $'x\2' $'\1x' $'\2x'; do
         v=X\${c}X;
         printf %s \"\$v\" | od -a | awk 'NR==1 { \$1=\"\"; print }';
     done"

Output on bash 4.4 and current git:
  X Y Y X
  X Y soh Y X
  X Y Y X
  X Y soh Y X
  X Y Y X
  X Y soh Y X

Expected output, on bash 4.3 and earlier, and all other shells:
  X Y soh Y X
  X Y soh Y X
  X Y soh Y X
  X Y soh Y X
  X Y soh Y X
  X Y soh Y X

Note that quoting the assigned value is an effective workaround. But in 
shell grammar, IFS should never have any influence on true shell 
assignments (as opposed to assignment-arguments) and quoting expansions 
should not be necessary. (This paragraph is included to pre-empt readers 
who would reply "just quote everything". Yes, I know. It's still a bug.)

Thanks,

- Martijn

[toc] | [standalone]


Back to top | Article view | gnu.bash.bug


csiph-web