From: Kipton Moravec <kipton_moravec@yahoo.com>
To: Eric Blake <eblake@redhat.com>, "cygwin@cygwin.com" <cygwin@cygwin.com>
Subject: Re: Bash shell script issue
Date: Wed, 07 Sep 2016 16:22:00 -0000 [thread overview]
Message-ID: <1709131555.354781.1473264514358@mail.yahoo.com> (raw)
In-Reply-To: <c0b897be-d3cf-f3b9-cf5b-0024a1d395e5@redhat.com>
As I said I am new to shell scripting. I have been programming microcontrollers, bare bones with no OS for most of the past 40 years.
dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
$ od -cx testconvert1.sh
0000000 # ! / b i n / b a s h \r \n e c h
2123 622f 6e69 622f 7361 0d68 650a 6863
0000020 o $ P W D \r \n p r o j e c t _
206f 5024 4457 0a0d 7270 6a6f 6365 5f74
0000040 r o o t = $ P W D \r \n e c h o
6f72 746f 243d 5750 0d44 650a 6863 206f
0000060 $ p r o j e c t _ r o o t \r \n x
7024 6f72 656a 7463 725f 6f6f 0d74 780a
0000100 = $ { p r o j e c t _ r o o t }
243d 707b 6f72 656a 7463 725f 6f6f 7d74
0000120 / t o o l s \r \n e c h o $ x \r
742f 6f6f 736c 0a0d 6365 6f68 2420 0d78
0000140 \n e c h o $ { x } | c a t
650a 6863 206f 7b24 7d78 7c20 6320 7461
0000160 - A
2d20 0041
0000163
Shows there is not "careless editing".
So "Insufficient quoting" means nothing to me. How should it be? I was taking the example from a shell script I found.
So I added quoting on the echo:
#!/bin/bash
echo "$PWD"
project_root=$PWD
echo "$project_root"
x=${project_root}/tools
echo "$x"
echo "${x}" | cat -A
dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
$ ./testconvert1.sh
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/toolsdalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut^M/tools^M$
No difference.
So maybe in the commands?
#!/bin/bash
echo "$PWD"
project_root="$PWD"
echo "$project_root"
x="${project_root}"/tools
echo "$x"
echo "${x}" | cat -A
dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
$ ./testconvert1.sh
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/toolsdalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut^M/tools^M$
Again no difference.
So finally I looked up d2u
dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
$ d2u testconvert1.sh
dos2unix: converting file testconvert1.sh to Unix format...
dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
$ ./testconvert1.sh
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut/tools
/home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut/tools$
That fixed it, but I still do not understand it.
Why are there ^M (carriage return) in the middle of a line? I can understand the confusion at the end of the line. But there was none shown in the middle from od command.
Kip
----- Original Message -----
From: Eric Blake <eblake@redhat.com>
To: cygwin@cygwin.com; kipton_moravec@yahoo.com
Sent: Tuesday, September 6, 2016 8:21 PM
Subject: Re: Bash shell script issue
On 09/06/2016 05:36 PM, Kipton Moravec wrote:
> I this is the script:
> #!/bin/bash
> echo $PWD
Insufficient quoting. This does not do the right thing if $PWD contains
spaces. But not necessarily related to your problem at hand.
> project_root=$PWD
> echo $project_root
Again, insufficient quoting.
> x=${project_root}/tools
> echo $x
And again.
> echo ${x} | cat -A
>
> On original Windows 7 computer I get:
> dalkmora@DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut
> $ ./testconvert1.sh
> /home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
> /home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
> /toolsdalkmora/walnut/dp2b_walnut_customer_flextronics/walnut
> /home/dalkmora/walnut/dp2b_walnut_customer_flextronics/walnut^M/tools^M$
The carriage returns are likely a product of you editing the file in
text mode (Windows notepad is notorious for this, but many other native
programs do likewise), but trying to execute the script in binary mode
(the default, if you do not use 'set -o igncr').
> What am I doing wrong or is this an error?
> Where do the carriage returns (^M) come from, and how do I get rid of them?
d2u /path/to/your/script
to remove all the carriage returns from your careless editing. Once they
are gone, then you don't need the 'igncr' crutch to tell bash to go into
text mode.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
next prev parent reply other threads:[~2016-09-07 16:22 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <330568691.2384551.1473201409220.ref@mail.yahoo.com>
2016-09-06 22:39 ` Kipton Moravec
2016-09-07 1:21 ` Eric Blake
2016-09-07 1:41 ` Michel LaBarre
2016-09-07 15:35 ` Kipton Moravec
2016-09-07 15:49 ` Marco Atzeri
2016-09-07 17:41 ` Erik Soderquist
2016-09-07 16:05 ` Andrey Repin
2016-09-07 16:25 ` Kipton Moravec
2016-09-07 16:22 ` Kipton Moravec [this message]
2016-09-07 17:35 ` Andrey Repin
2016-09-07 18:09 ` Eliot Moss
2016-09-07 18:28 ` Eric Blake
2016-09-09 19:37 ` Gene Pavlovsky
2016-09-07 19:16 ` Brian Inglis
[not found] ` <32e004cb44addbaefde0839df5500d60@www.ds.net>
[not found] ` <039bcc69d005bf6db5aba99a90f51e36@www.ds.net>
2016-09-07 17:54 ` wilson
2016-09-07 18:13 ` Eliot Moss
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1709131555.354781.1473264514358@mail.yahoo.com \
--to=kipton_moravec@yahoo.com \
--cc=cygwin@cygwin.com \
--cc=eblake@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).