www.delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:reply-to:to:message-id:in-reply-to | |
:references:subject:mime-version:content-type | |
:content-transfer-encoding; q=dns; s=default; b=worgFWGU03Wmc1S2 | |
Z4mcsNDyR5QjrTjZEDw6ZtGAnVum1wl2MJDhmDHKTMJTIFcgp7mZLW50F6g6rlnL | |
jYr18AIgWGbVtQMJv18kBiJs2ss+A0p5smKoF5MJje52v4z8cf4wJKE/791Q3M96 | |
ko4pmklDRsFK9gyKIASFQv8+ASM= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:date:from:reply-to:to:message-id:in-reply-to | |
:references:subject:mime-version:content-type | |
:content-transfer-encoding; s=default; bh=sKH/tFBC2UxiUayceLp5LY | |
vAH3M=; b=YMDNjmEwHTsy2CHby3M1mWo/MMfHmAaL8a4JKTao4H+kwBwOKxWjVz | |
1p9UudHXcVuaphJS1wsZL+lJRBEquOBtxLgLqnURaFItuD4cWzNWtjAyf6/6av18 | |
ETzk4w/x6MyvRXQDSU4nwsrj7bx1VHTHpou2yahNieHwbmP4fR28Q= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Virus-Found: | No |
X-Spam-SWARE-Status: | No, score=1.5 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM,RP_MATCHES_RCVD,SPF_PASS autolearn=no version=3.3.2 spammy=eblakeredhatcom, eblake AT redhat DOT com, U*kipton_moravec, kipton_moravecyahoocom |
X-HELO: | nm41-vm8.bullet.mail.ne1.yahoo.com |
Date: | Wed, 7 Sep 2016 16:08:34 +0000 (UTC) |
From: | Kipton Moravec <kipton_moravec AT yahoo DOT com> |
Reply-To: | Kipton Moravec <kipton_moravec AT yahoo DOT com> |
To: | Eric Blake <eblake AT redhat DOT com>, "cygwin AT cygwin DOT com" <cygwin AT cygwin DOT com> |
Message-ID: | <1709131555.354781.1473264514358@mail.yahoo.com> |
In-Reply-To: | <c0b897be-d3cf-f3b9-cf5b-0024a1d395e5@redhat.com> |
References: | <330568691 DOT 2384551 DOT 1473201409220 DOT ref AT mail DOT yahoo DOT com> <330568691 DOT 2384551 DOT 1473201409220 AT mail DOT yahoo DOT com> <c0b897be-d3cf-f3b9-cf5b-0024a1d395e5 AT redhat DOT com> |
Subject: | Re: Bash shell script issue |
MIME-Version: | 1.0 |
X-IsSubscribed: | yes |
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 AT 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 AT 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 AT 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 AT DALM0048 ~/walnut/dp2b_walnut_customer_flextronics/walnut $ d2u testconvert1.sh dos2unix: converting file testconvert1.sh to Unix format... dalkmora AT 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 AT redhat DOT com> To: cygwin AT cygwin DOT com; kipton_moravec AT yahoo DOT 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 AT 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |