Subject: Invalid processing of Parameter Expansion

From: murzik <[email-masked]>
Date: Thu, 15 Aug 2024 17:24:40 +1100

Package: bash
X-Debbugs-Cc: [email-masked]
Version: 5.2.15-2+b7
Severity: normal
Tags: upstream

Dear Maintainer,
When executing:
$ Var='Example1 $(Example2)'
$ echo "${Var#*'$('}"

I see an error:
bash: command substitution: line 6: unexpected EOF while looking for 
matching `''

instend of the expected result of cutting off part of the text.
dash and busybox ash work as excepted:
$ echo "${Var#*'$('}"
Example2)

-- System Information:
Distributor ID: Devuan
Description: Devuan GNU/Linux 5 (daedalus)
Release: 5
Codename: daedalus
Architecture: x86_64

Kernel: Linux 6.1.0-23-amd64 (SMP w/6 CPU threads; PREEMPT)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: OpenRC (via /run/openrc), PID 1: openrc-init

Versions of packages bash depends on:
ii base-files 12.4devuan3
ii debianutils 5.7-0.5~deb12u1
ii libc6 2.36-9+deb12u7
ii libtinfo6 6.4-4

Versions of packages bash recommends:
ii bash-completion 1:2.11-6

Versions of packages bash suggests:
pn bash-doc <none>

-- Configuration Files:
/etc/bash.bashrc [Errno 1] Operation not permitted: '/etc/bash.bashrc'
/etc/skel/.bash_logout [Errno 1] Operation not permitted: 
'/etc/skel/.bash_logout'
/etc/skel/.bashrc [Errno 1] Operation not permitted: '/etc/skel/.bashrc'
/etc/skel/.profile [Errno 1] Operation not permitted: 
'/etc/skel/.profile'

-- no debconf information

---

From: Mark Hindley <[email-masked]>
Date: Thu, 15 Aug 2024 07:41:19 +0100

Control: merge -1 856

Murzik,

>    X-Debbugs-Cc: [email-masked]

As you have identified, this is an upstream issue.

You would be best reporting it using bashbug(1). Bash appears not to have a
public bug tracker, so I cannot see if it has already been reported.

Thanks

Mark

---

From: Mark Hindley <[email-masked]>
Date: Thu, 15 Aug 2024 14:19:54 +0100

On Thu, Aug 15, 2024 at 01:08:10PM +0000, g4sra wrote:
> Escaping $ rather than trying to quote works as expected
> 
> echo "${Var#*\$(}"
> 
> Is quoting a valid method in bash ?

A good point.

Closing as there may not even be a bug here. Even if there is, it is upstream.

Mark