From: rhowarth AT sgb DOT co DOT uk (Howarth, Richard) Subject: RE: bash questions 9 Feb 1998 02:31:25 -0800 Message-ID: <199802090947.JAA04114.cygnus.gnu-win32@peanut.sgb.co.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="---- =_NextPart_000_01BD3543.8C4A9160" To: gnu-win32 AT cygnus DOT com This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------ =_NextPart_000_01BD3543.8C4A9160 Content-Type: text/plain As has been stated elsewhere on the list, if you want to run csh scripts get hold of a ported csh - it will save you a lot of grief. If you really want to convert your scripts to run under bash though I hope the following ideas will help ... > ---------- > From: Eric Horowitz[SMTP:ehorowitz AT mindspring DOT com] > Sent: 06 February 1998 14:07 > To: gnu-win32 AT cygnus DOT com > Subject: bash questions > > > I installed gnu-win32 simply to run some csh scripts that I had on a > Solaris box. In the process of converting this script to bash I have > encountered the following problems... > > 1) set > > It does not seem to do anything. I have been using declare instead. > Is set > supposed to set variables? Not really. It is used more for switching features of bash on and off, although it can be used to set positional parameters (see later) to set a parameter, simply assign it: $ PARAM="something or other" If you need the parameter to be visible to sub-processes, export it: $ export PARAM > 2) let > > let THREE=1+2 > > works fine in that > > echo $THREE > > responds with 3, but... > > let OLTT=1<2 > > responds with... > > 2: no such file or directory The problem is that the "<2" is being interpereted as redirecting input from a file, named "2" in this case. You can either wrap the expression in quotes, or use the "$((" construction: $ let OLTT="1<2" or $ OLTT=$((1<2)) both work. > 3) If I have a string of items such as... > > declare ALIST="abc def ghi jkl mno pqr" > > I can access items individually in a for command such as... > > for ITEM in $ALIST; do > > but is there a command or syntax that will let me access any one > specific > member? I would > like to do something like... > > declare THIS_ITEM=$ALIST[$INDEX] The korn shell has a "set -A" for simple arrays, but I can't find this in bash. You could try one of the following: $ ALIST="One Two Three Four" $ set $ALIST -- $ THIS_ITEM=$3 $ echo $3 Three or, using awk: $ ALIST="One Two Three Four" $ INDEX=2 $ THIS_ITEM=$( echo $ALIST | awk -v INDEX=$INDEX "{print $INDEX}") $ echo $THIS_ITEM Two NB these methods will allow you to retrieve specific subscript values, they will not allow you to modify them. > 4) test > > I would like to make complicated arithmetic relational operations > such > as... > > test ($V1 -lt $V2) -a ($V3 -lt $V4) > but I am not getting the syntax quite right. Is there a way to do > this? > I think you need to escape the parentheses, so that they are not interpereted by the shell. $ test \( $V1 -lt $V2 \) -a \( $V3 -lt $V4 \) seems to work. NB while looking at these questions I noticed an odd thing: $ test 1 -lt 2 returns "0", but $ let "TEST=(1<2)" results in TEST being assigned "1" > Thanks... Eric Horowitz My pleasure. > - > For help on using this list (especially unsubscribing), send a message > to > "gnu-win32-request AT cygnus DOT com" with one line of text: "help". > ------ =_NextPart_000_01BD3543.8C4A9160 Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 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 LBEdgSKQbuAh4S1BjVD3ZHNNQqARcmngFeCCI6ak/ieQATdRUxR9sSlykluzsn8fMDzhsdIiYSqr bdmjtU/9fYFUfQCLkQnRM0AIYXAWv25RWJKsZDChbei4CTN02T9/g8gHxJOZFx/AXLRhd95rwv/E D8UbuSM9hJbHLLYof2XGNHzK8iNQds4Vc7kUjRBcezeSxgG5I1z8fSJrFsiHuAfJJ30AuYX8TkIf MpXxbxIEcCvFJoH/KyAgAyCiEsAIgSQhshZzMv8E9WAgCkF0AR9BJrEjwlpi39drBGEGkE2BHsBt nB+dL/uePwXANFhwlWF537N2tHf/AMC0oTfxC1AN4B4jULEfQP9qATWRGGBqwWlkKmFp4EfTP4hD uYWqH1mT4FJqYCRWrR0gLWcwblBWeYEtIpD96CEz6GXgIFlIvoRp8FpT/yHRUtWx8a+0R5Cg8SDA bXD+aIJgXhKudiBQTYNbIVMi/2C/HF1LZ1uC0QBwyCCwB5D/Z+Aqde9BOkHWQnQBThCMh+9tIR7h WmKOC2Lcc7v0JXbzblHn01xcz+DoOfgB6OP/+BTpZ/kC7xVaoiiDm9rVmOcesIiyF/Bva8rDjMOV 8f9HlyohWmEN4I6iA6AEcL9zf8Lb59PoVISWjnEIcAYxIuwwIoIjl5wiq/Cj4Zqz/3AWZaGzwCGh fbEEUo2VbUT9kSIxpZ3dX95veNnvFYugvw2wfTDmkTVs7x8cbE0msP+9wR2AZZHc3wkPChoxRsTw /9XgLDMfEVy0UyMfgmpggUGvsjEmgyDg2VViK0EpbLHvGOCOsbDhsWBhIdAgkQ0l+iJBty2PAEeT QkmNUIHDX7HSH4DBxXQwRVEiLDIirw/PENgOZUrtfQ0gAB8wAAAeADFAAQAAAAkAAABSSUNIQVJE SAAAAAADABpAAAAAAB4AMEABAAAACQAAAFJJQ0hBUkRIAAAAAAMAGUAAAAAAAwA2AAAAAAAeAEIQ AQAAADYAAAA8My4wLjEuMzIuMTk5ODAyMDYwOTA3NDQuMDA2OWI2NjhAcG9wLm1pbmRzcHJpbmcu Y29tPgAAAAMAJgAAAAAAAgH5PwEAAABQAAAAAAAAANynQMjAQhAatLkIACsv4YIBAAAABgAAAC9P PVRXSUNLRU5IQU0vT1U9Q1JFQVRVUkUvQ049UkVDSVBJRU5UUy9DTj1SSUNIQVJESAAeAPg/AQAA ABEAAABIb3dhcnRoLCBSaWNoYXJkAAAAAB4AOEABAAAACQAAAFJJQ0hBUkRIAAAAAAIB+z8BAAAA UAAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAAAAYAAAAvTz1UV0lDS0VOSEFNL09VPUNSRUFUVVJF L0NOPVJFQ0lQSUVOVFMvQ049UklDSEFSREgAHgD6PwEAAAARAAAASG93YXJ0aCwgUmljaGFyZAAA AAAeADlAAQAAAAkAAABSSUNIQVJESAAAAABAAAcwwEOSoTg1vQFAAAgwMHAeikM1vQEeAD0AAQAA AAUAAABSRTogAAAAAB4AHQ4BAAAADwAAAGJhc2ggcXVlc3Rpb25zAAALACkAAAAAAAsAIwAAAAAA AwAGECmvvWIDAAcQlAgAAAMAEBAAAAAAAwAREAIAAAAeAAgQAQAAAGUAAABBU0hBU0JFRU5TVEFU RURFTFNFV0hFUkVPTlRIRUxJU1QsSUZZT1VXQU5UVE9SVU5DU0hTQ1JJUFRTR0VUSE9MRE9GQVBP UlRFRENTSC1JVFdJTExTQVZFWU9VQUxPVE9GR1JJAAAAAAnr ------ =_NextPart_000_01BD3543.8C4A9160-- - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".