public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Another confusing error from someone else's Cygwin setup
@ 2023-06-26 23:35 David Karr
  2023-06-26 23:58 ` Dan Harkless
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: David Karr @ 2023-06-26 23:35 UTC (permalink / raw)
  To: The Cygwin Mailing List

[-- Attachment #1: Type: text/plain, Size: 1339 bytes --]

I'm seeing a problem with someone else's Cygwin setup, sort of similar to a
problem I asked about a couple of weeks ago, in that it's a problem with
the same user, but seemingly a completely different problem.

He is using a Bash script that I wrote, and he gets a seemingly nonsensical
error that I don't understand.

The script starts out pretty simply, just like this:
------------------
#! /bin/bash
#set -x
main() {
if [ "$1" == "" ]; then
usage;
exit;
fi
...
-----------------

He was getting a weird error on line 3, just saying this:
---------------------
...: line 3: syntax error near unexpected token `$'{\r''
...: line 3: `main() {
---------------

This was pretty perplexing, so I asked him to uncomment the "set -x" line
to see if that provided any useful information, and that fails with a
different error:
-------------------
: invalid option...: line 2: set: -
set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
------------------

This also makes no sense to me.  I compared our "uname -a" outputs, and
they are almost identical. However, I then had him run "bash --version",
and I compared it to mine.  Ironically, I'm using an OLDER version of bash
than he is. I'm on v4.4.12(3)-release, and he's on v5.2.15(3)-release.  Is
there something in 5.x versions of Bash that could cause these issues?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Another confusing error from someone else's Cygwin setup
  2023-06-26 23:35 Another confusing error from someone else's Cygwin setup David Karr
@ 2023-06-26 23:58 ` Dan Harkless
  2023-06-27  0:01   ` Dan Harkless
  2023-06-27  2:08 ` Mike Gran
  2023-07-05 19:25 ` Andrey Repin
  2 siblings, 1 reply; 6+ messages in thread
From: Dan Harkless @ 2023-06-26 23:58 UTC (permalink / raw)
  To: cygwin

On 6/26/2023 4:35 PM, David Karr via Cygwin wrote:

> > He was getting a weird error on line 3, just saying this:
> > ---------------------
> > ...: line 3: syntax error near unexpected token `$'{\r''
> > ...: line 3: `main() {
> > ---------------

Apologies, I don't remember your other report, but this one kind of
sounds like an end-of-line characters problem.  Try installing
(Cygwin's) dos2unix, if you don't already have it, then try running
dos2unix on the script.  If it still doesn't work, try then running
unix2dos.  If you have binutils installed, you can also use the 'file'
command for a quick report on whether files have lines terminated with
CR (macOS), CRLF (Windows), or LF (UNIX/Linux).  'file' might not
realize when you have files with inconsistent line-terminators, though.

--
Dan Harkless
http://harkless.org/dan/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Another confusing error from someone else's Cygwin setup
  2023-06-26 23:58 ` Dan Harkless
@ 2023-06-27  0:01   ` Dan Harkless
  0 siblings, 0 replies; 6+ messages in thread
From: Dan Harkless @ 2023-06-27  0:01 UTC (permalink / raw)
  To: cygwin

On 6/26/2023 4:58 PM, Dan Harkless via Cygwin wrote:
> On 6/26/2023 4:35 PM, David Karr via Cygwin wrote:
>
> > > He was getting a weird error on line 3, just saying this:
> > > ---------------------
> > > ...: line 3: syntax error near unexpected token `$'{\r''
> > > ...: line 3: `main() {
> > > ---------------
>
> Apologies, I don't remember your other report, but this one kind of
> sounds like an end-of-line characters problem.  Try installing
> (Cygwin's) dos2unix, if you don't already have it, then try running
> dos2unix on the script.  If it still doesn't work, try then running
> unix2dos.  If you have binutils installed, you can also use the 'file'
> command for a quick report on whether files have lines terminated with
> CR (macOS), CRLF (Windows), or LF (UNIX/Linux).  'file' might not
> realize when you have files with inconsistent line-terminators, though.

And I forgot dos2unix also includes a 'mac2unix' command these days 
(though not a mac2dos), so maybe try that first.

--
Dan Harkless
http://harkless.org/dan/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Another confusing error from someone else's Cygwin setup
  2023-06-26 23:35 Another confusing error from someone else's Cygwin setup David Karr
  2023-06-26 23:58 ` Dan Harkless
@ 2023-06-27  2:08 ` Mike Gran
  2023-06-27 17:52   ` David Karr
  2023-07-05 19:25 ` Andrey Repin
  2 siblings, 1 reply; 6+ messages in thread
From: Mike Gran @ 2023-06-27  2:08 UTC (permalink / raw)
  To: The Cygwin Mailing List, David Karr

> On Monday, June 26, 2023 at 04:36:30 PM PDT, David Karr via Cygwin <cygwin@cygwin.com> wrote: 

> m seeing a problem with someone else's Cygwin setup, sort of similar to a
> problem I asked about a couple of weeks ago, in that it's a problem with
> the same user, but seemingly a completely different problem.

...

> He was getting a weird error on line 3, just saying this:
> ---------------------
> ...: line 3: syntax error near unexpected token `$'{\r''
> ...: line 3: `main() {
> ---------------

If you run bash with the "-o igncr" option, it will ignore extraneous
carriage return characters.

But the characters are there in the first place because your
script has been converted into using Windows line endings:
carriage return + linefeed.

You didn't say how the script was transferred, but lots
of programs could add returns when you transfer something
to windows: git or ftp just to name a few.

You both could try running "bash --version".  The first line should
say something like
"GNU bash, version 5.2.15(3)-release (x86_64-pc-cygwin)"

Note the "pc-cygwin" at the end.

HTH,
Mike Gran

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Another confusing error from someone else's Cygwin setup
  2023-06-27  2:08 ` Mike Gran
@ 2023-06-27 17:52   ` David Karr
  0 siblings, 0 replies; 6+ messages in thread
From: David Karr @ 2023-06-27 17:52 UTC (permalink / raw)
  To: Mike Gran; +Cc: The Cygwin Mailing List

[-- Attachment #1: Type: text/plain, Size: 1463 bytes --]

The line endings were the issue, thanks. They were that way because I
didn't realize I should force those files in git to have eol=lf in a
.gitattributes file.  This is now all fixed.

On Mon, Jun 26, 2023 at 7:08 PM Mike Gran <spk121@yahoo.com> wrote:

> > On Monday, June 26, 2023 at 04:36:30 PM PDT, David Karr via Cygwin <
> cygwin@cygwin.com> wrote:
>
> > m seeing a problem with someone else's Cygwin setup, sort of similar to a
> > problem I asked about a couple of weeks ago, in that it's a problem with
> > the same user, but seemingly a completely different problem.
>
> ...
>
> > He was getting a weird error on line 3, just saying this:
> > ---------------------
> > ...: line 3: syntax error near unexpected token `$'{\r''
> > ...: line 3: `main() {
> > ---------------
>
> If you run bash with the "-o igncr" option, it will ignore extraneous
> carriage return characters.
>
> But the characters are there in the first place because your
> script has been converted into using Windows line endings:
> carriage return + linefeed.
>
> You didn't say how the script was transferred, but lots
> of programs could add returns when you transfer something
> to windows: git or ftp just to name a few.
>
> You both could try running "bash --version".  The first line should
> say something like
> "GNU bash, version 5.2.15(3)-release (x86_64-pc-cygwin)"
>
> Note the "pc-cygwin" at the end.
>
> HTH,
> Mike Gran
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Another confusing error from someone else's Cygwin setup
  2023-06-26 23:35 Another confusing error from someone else's Cygwin setup David Karr
  2023-06-26 23:58 ` Dan Harkless
  2023-06-27  2:08 ` Mike Gran
@ 2023-07-05 19:25 ` Andrey Repin
  2 siblings, 0 replies; 6+ messages in thread
From: Andrey Repin @ 2023-07-05 19:25 UTC (permalink / raw)
  To: David Karr, cygwin

Greetings, David Karr!

> I'm seeing a problem with someone else's Cygwin setup, sort of similar to a
> problem I asked about a couple of weeks ago, in that it's a problem with
> the same user, but seemingly a completely different problem.

> He is using a Bash script that I wrote, and he gets a seemingly nonsensical
> error that I don't understand.

> The script starts out pretty simply, just like this:
> ------------------
> #! /bin/bash
> #set -x
> main() {
> if [ "$1" == "" ]; then
> usage;
> exit;
> fi
> ...
> -----------------

> He was getting a weird error on line 3, just saying this:
> ---------------------
> ...: line 3: syntax error near unexpected token `$'{\r''
> ...: line 3: `main() {
> ---------------

Quick and dirty way to solve your issue -

$ tr -d '\r' > script.fixed < script.erring

> This was pretty perplexing,

It is actually pretty clear, though.

$ od -t x1a < script.erring

See the output.


-- 
With best regards,
Andrey Repin
Wednesday, July 5, 2023 22:22:57

Sorry for my terrible english...


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-11-06 17:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-26 23:35 Another confusing error from someone else's Cygwin setup David Karr
2023-06-26 23:58 ` Dan Harkless
2023-06-27  0:01   ` Dan Harkless
2023-06-27  2:08 ` Mike Gran
2023-06-27 17:52   ` David Karr
2023-07-05 19:25 ` Andrey Repin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).