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


Groups > gnu.bash.bug > #14836

Another ^A bug

From Martijn Dekker <martijn@inlv.org>
Newsgroups gnu.bash.bug
Subject Another ^A bug
Date 2018-11-20 18:24 +0100
Message-ID <mailman.4314.1542734655.1284.bug-bash@gnu.org> (permalink)

Show all headers | View raw


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

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

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

csiph-web