Package: devscripts
Version: 2.9.27
Severity: normal

Hello,

Looks like pattern parameter expansions:
 ${parameter#word}, ${parameter##word},
 ${parameter%word}, ${parameter%%word},
 ${parameter/pattern/string} and ${parameter//pattern/string}),
parameter length expansion ${#parameter},
error expansions:
 ${parameter:?error message} and ${parameter?error message}
varnames expansion:
 ${!prefix*} and [EMAIL PROTECTED]
are bashisms too and checkbashisms doesn't check for these.

For example, on Solaris the above expansions doesn't work
(${parameter:-word}, ${parameter:=word} etc. do):
> [EMAIL PROTECTED]:~$ cat subst.sh 
> #!/bin/sh
> (echo '${PATH} =' ${PATH})
> (echo '${PATH+/bin} =' ${PATH+/bin})
> (echo '${PATH:+/bin} =' ${PATH:+/bin})
> (echo '${PATH-/bin} =' ${PATH-/bin})
> (echo '${PATH:-/bin} =' ${PATH:-/bin})
> (echo '${PATH=/bin} =' ${PATH=/bin})
> (echo '${PATH:=/bin} =' ${PATH:=/bin})
> (echo '${PATH?No PATH} =' ${PATH?No PATH})
> (echo '${PATH:?No PATH} =' ${PATH:?No PATH})
> (echo '${!P*} =' ${!P*})
> (echo '[EMAIL PROTECTED] =' [EMAIL PROTECTED])
> (echo '${PATH:1} =' ${PATH:1})
> (echo '${PATH:0:7} =' ${PATH:0:7})
> (echo '${#PATH} =' ${#PATH})
> (echo '${PATH%%:*} =' ${PATH%%:*})
> (echo '${PATH%:*} =' ${PATH%:*})
> (echo '${PATH#*:} =' ${PATH#*:})
> (echo '${PATH##*:} =' ${PATH##*:})
> (echo '${PATH/local/loc} =' ${PATH/local/loc})
> (echo '${PATH//local/loc} =' ${PATH//local/loc})
> [EMAIL PROTECTED]:~$ ./subst.sh 
> ${PATH} = /usr/bin:/usr/local/ant/bin:/usr/local/bin
> ${PATH+/bin} = /bin
> ${PATH:+/bin} = /bin
> ${PATH-/bin} = /usr/bin:/usr/local/ant/bin:/usr/local/bin
> ${PATH:-/bin} = /usr/bin:/usr/local/ant/bin:/usr/local/bin
> ${PATH=/bin} = /usr/bin:/usr/local/ant/bin:/usr/local/bin
> ${PATH:=/bin} = /usr/bin:/usr/local/ant/bin:/usr/local/bin
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution
> ./subst.sh: bad substitution

checkbashism knows only about substring expansion and 
replace expansion though:
> [EMAIL PROTECTED]:~$ checkbashisms ./subst.sh 
> possible bashism in ./subst.sh line 13 (${foo:3[:1]}):
> (echo '${PATH:1} =' ${PATH:1})
> possible bashism in ./subst.sh line 14 (${foo:3[:1]}):
> (echo '${PATH:0:7} =' ${PATH:0:7})
> possible bashism in ./subst.sh line 20 (${parm/?/pat[/str]}):
> (echo '${PATH/local/loc} =' ${PATH/local/loc})
> possible bashism in ./subst.sh line 21 (${parm/?/pat[/str]}):
> (echo '${PATH//local/loc} =' ${PATH//local/loc})

-- System Information:
Debian Release: 4.0
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-grsec
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages devscripts depends on:
ii  debianutils                  2.17        Miscellaneous utilities specific t
ii  dpkg-dev                     1.13.25     package building tools for Debian
ii  libc6                        2.3.6.ds1-8 GNU C Library: Shared libraries
ii  perl                         5.8.8-7     Larry Wall's Practical Extraction 
ii  sed                          4.1.5-1     The GNU sed stream editor

Versions of packages devscripts recommends:
ii  fakeroot                      1.5.10     Gives a fake root environment

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to