Date: Sun, 30 May 2010 08:22:28 +0100 From: Matthew Seaman <m.seaman@infracaninophile.co.uk> To: Aiza <aiza21@comclark.com> Cc: Anh Ky Huynh <xkyanh@gmail.com>, "questions@freebsd.org" <questions@freebsd.org> Subject: Re: sh script writing help Message-ID: <4C021234.3000803@infracaninophile.co.uk> In-Reply-To: <4C020CB2.5070408@comclark.com> References: <4C01F419.10100@comclark.com> <20100530053935.GG8866@dan.emsphone.com> <4C02015C.5070605@comclark.com> <20100530131730.1931dbd4@icy.localdomain> <4C020CB2.5070408@comclark.com>
next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 30/05/2010 07:58:58, Aiza wrote: > Anh Ky Huynh wrote: >> On Sun, 30 May 2010 14:10:36 +0800 >> Aiza <aiza21@comclark.com> wrote: >> >>> Dan Nelson wrote: >>>> In the last episode (May 30), Aiza said: >>>>> In a .sh type script I have && exerr " very long message gt 250 >>>>> char" all on the same line. This is a real pain to edit. >>>>> >>>>> Is there some code a can use to continue this on the next line >>>>> so I can see it on the screen and still have the command >>>>> function? I tried \ with no luck. >>>> \ should work just fine: >>>> >>>> $ echo "long line \ >>>> split onto two" >>>> long line split onto two >>>> $ >>>> >>> >>> You example works only because the continuation starts at position >>> 1. >>> >>> $ [ -n "${test-name-fowarding}" -o -n "${test-noname}" ] || \ >>> exerr "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\ >>> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >>> this is for ease of reading the code but will display with a bunch >>> of spaces in the middle of the sentence. The \ works fine bypassing >>> all white space between code not so for white space between the " >>> ". >>> >>> Is there a coding method to get around this? >> >> Do you try to read your expression from a file? >> exerr `cat /path/to/data` >> >> the contents of /path/to/data are your very long string. A standard means of doing this sort of thing is to use a 'Here' document: if ! [ -n "${test-name-forwarding}" -o -n "${test-noname}" ]; then exerr <<-E_O_EXERR xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx E_O_EXER fi The '<<-' operator is a variant on the usual '<<' operator used for this: the only difference is that it strips leading tabs from the lines in the here document. Cheers, Matthew - -- Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard Flat 3 PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate JID: matthew@infracaninophile.co.uk Kent, CT11 9PW -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.14 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkwCEjQACgkQ8Mjk52CukIzc7gCbBalo5oJcsw+jkXHOm4+8qU3f l2EAn30WwaSL3kTZ1iy3FGkTxQlBZ3pr =WxjG -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C021234.3000803>