bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Wrong variable expansion inside quotation marks


From: Reuti
Subject: Wrong variable expansion inside quotation marks
Date: Wed, 13 Feb 2008 12:21:38 +0100

Hi,

I have one system with:

reuti@theochem:~> bash --version
GNU bash, version 3.00.16(1)-release (i586-suse-linux)
Copyright (C) 2004 Free Software Foundation, Inc.

reuti@theochem:~> hallo=hallo
reuti@theochem:~> rr=r
reuti@theochem:~> tt="${rr:0:${#rr}-1}$hallo"
reuti@theochem:~> echo ${#tt}
5

This is what I expect. But in an newer bash:

reuti@marc-hn:~$ bash --version
GNU bash, version 3.1.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

reuti@marc-hn:~$ hallo=hallo
reuti@marc-hn:~$ rr=r
reuti@marc-hn:~$ tt="${rr:0:${#rr}-1}$hallo"
reuti@marc-hn:~$ echo ${#tt}
6

There is suddenly a 6th illegal character generated (in the original routine its purpose was to remove the last character of $rr (which is als at least one character long). But only if rr is one character long - if it's longer all is fine again.

I circumvent the problem for now by removing the quotation marks:

reuti@marc-hn:~$ tt=${rr:0:${#rr}-1}$hallo
reuti@marc-hn:~$ echo ${#tt}
5


-- Reuti




reply via email to

[Prev in Thread] Current Thread [Next in Thread]