[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash seems confused about it's state after unclosed single quotes in
From: |
Chet Ramey |
Subject: |
Re: bash seems confused about it's state after unclosed single quotes in nested command substitution |
Date: |
Sat, 16 Apr 2022 11:40:38 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 |
On 4/15/22 11:52 AM, Martin Schulte wrote:
Hello bash-bughunters,
please consider the following interactive lines:
It turns out that running it in an interactive shell is the key.
$ echo $BASH_VERSION
5.1.4(1)-release
$ uname -a
Linux t1 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64 GNU/Linux
$ echo $BASH_VERSION
5.1.4(1)-release
$ sleep $(expr 60 - $(date +%s')) ; date
bash: command substitution: line 417: unexpected EOF while looking for matching
`''
bash: command substitution: line 418: syntax error: unexpected end of file
bash: unexpected EOF while looking for matching `)'
$
At this point it looks as if bash has encountered the problem and thus not
executed the command line - fine.
Things get strange when you enter a command, e.g. echo:
$ echo
To get out of this you can enter the missing single quote followed by two
closing braces:
(Well, parens ;-) )
Because those are the missing delimiters. The problem is actually bash
jumping back to the top level because it's trying to find the correct
delimiter to store the line in the command-oriented history, not anything
to do with the parser per se.
It works in bash-5.2, which does command substitution parsing completely
differently.
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/