From owner-freebsd-hackers@FreeBSD.ORG Thu Aug 6 18:15:20 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A12AB106564A for ; Thu, 6 Aug 2009 18:15:20 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from mail2.fluidhosting.com (mx21.fluidhosting.com [204.14.89.4]) by mx1.freebsd.org (Postfix) with ESMTP id 3205F8FC17 for ; Thu, 6 Aug 2009 18:15:19 +0000 (UTC) Received: (qmail 23558 invoked by uid 399); 6 Aug 2009 18:15:17 -0000 Received: from localhost (HELO foreign.dougb.net) (dougb@dougbarton.us@127.0.0.1) by localhost with ESMTPAM; 6 Aug 2009 18:15:17 -0000 X-Originating-IP: 127.0.0.1 X-Sender: dougb@dougbarton.us Message-ID: <4A7B1DB0.1040602@FreeBSD.org> Date: Thu, 06 Aug 2009 11:15:12 -0700 From: Doug Barton Organization: http://www.FreeBSD.org/ User-Agent: Thunderbird 2.0.0.22 (X11/20090729) MIME-Version: 1.0 To: freebsd-hackers@freebsd.org X-Enigmail-Version: 0.95.7 OpenPGP: id=D5B2F0FB Content-Type: multipart/mixed; boundary="------------000003020807060309050608" Subject: Problem in bin/sh stripping the * character through ${expansion%} X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Aug 2009 18:15:20 -0000 This is a multi-part message in MIME format. --------------000003020807060309050608 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Howdy, I came across this problem during a recent portmaster update. When trying to strip off the * character using variable expansion in bin/sh it doesn't work. Other "special" characters do work if they are properly escaped. The attached mini-script clearly shows the problem: $ sh sh-strip-problem var before stripping: foo\* var after stripping: foo\* var before stripping: foo\$ var after stripping: foo\ In contrast, bash does the right thing: bash sh-strip-problem var before stripping: foo\* var after stripping: foo\ var before stripping: foo\$ var after stripping: foo\ Should I go ahead and file a PR on this? Doug -- This .signature sanitized for your protection --------------000003020807060309050608 Content-Type: text/plain; name="sh-strip-problem" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="sh-strip-problem" var='foo\*' echo "var before stripping: $var" var=${var%\*} echo "var after stripping: $var" echo '' var='foo\$' echo "var before stripping: $var" var=${var%\$} echo "var after stripping: $var" exit 0 --------------000003020807060309050608--