Commit | Line | Data |
---|---|---|
21c4e167 H |
1 | |
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
8 | <html> | |
9 | <head> | |
10 | ||
11 | <title>Using arrays in bash</title> | |
12 | ||
13 | <meta name="description" content="Learn two ways two declare an array in bash in this Linux tip." /> | |
14 | <meta name="keywords" content="Linux,Vincent Danen,Foo,Linux Tips Newsletter" /> | |
15 | ||
16 | <style type="text/css" media="screen"> | |
17 | @import url("http://i.techrepublic.com.com/css/tr2006.css"); | |
18 | @import url("http://i.techrepublic.com.com/css/tr_ws2006.css"); | |
19 | @import url("http://news.zdnet.com/css/z/ads/hs.css"); | |
20 | @import url("http://i.techrepublic.com.com/css/trArticle.css"); | |
21 | </style> | |
22 | ||
23 | <link rel="stylesheet" type="text/css" media="print" href="http://i.techrepublic.com.com/css/trArticlePrint.css"> | |
24 | <link REL="SHORTCUT ICON" HREF="http://techrepublic.com.com/images/favicon.ico"> | |
25 | <script type="text/javascript" SRC="http://i.techrepublic.com.com/js/articleScript.js"></script> | |
26 | <script type="text/javascript">var dwInfo = "&oid=2100-10878_11-5820685&ptId=2100&onId=10878&sId=11&asId=5820685";</script> | |
27 | <!-- MAC ad --><!-- NO AD TEXT: _QUERY_STRING="sp=80&pos=100" _REQ_NUM="0" --><!-- default ad --><IMG SRC="http://adlog.com.com/adlog/i/r=7007&s=501815&o=1035:&h=cn&p=2&b=9&l=en_US&site=11&pt=5100&nd=1035&pid=&cid=5820685&pp=100&e=87&rqid=00c17-ad-e5477C00C37AAE066&orh=www.google.com&ort=&oepartner=&epartner=&cpnmodule=&count=&ra=213.220.241.158&dvar=&ucat_rsi=&t=2008.01.14.02.23.42/http://i.i.com.com/cnwk.1d/Ads/common/dotclear.gif" HEIGHT="0" WIDTH="0" alt="" style="position:absolute; top:0px; left:0px" /><!-- MAC [r20071210-1033-DynamicVars:1.13.8] c13-b2b-publish-web2.cnet.com::39603120 2008.01.14.02.23.42 --><!-- MAC T 689.689.68B.68B --> | |
28 | ||
29 | </head> | |
30 | <body id="EyeBrow"> | |
31 | ||
32 | <div id="goiter"> | |
33 | ||
34 | <div id="width"> | |
35 | <div id="eyebrowsBanner"> | |
36 | <div id="eyebrowsInner"> | |
37 | <!-- MAC ad --><div class="rubics_netxp1_main"> | |
38 | On CHOW: | |
39 | <a target="_top" href="http://dw.com.com/rubicsclk?ver=2&ts=2008.01.13.18.23.44&edId=87&onId=1035&ptId=5100&sId=11&appId=19&offId=948&unitId=45&poolId=1&f1=9&f2=%2d0&f3=%2d0&alg=3&&opt=0&linkPos=1&destUrl=http:%2F%2Fwww.chow.com%2Fstories%2F10785" class="xpromolink">Ten perfect grilled cheese sandwiches</a> | |
40 | <img src="http://dw.com.com/rubicsimp/c.gif?ver=2&ts=2008.01.13.18.23.44&edId=87&onId=1035&ptId=5100&sId=11&appId=19&unitId=45&poolId=1&f1=9&f2=%2d0&f3=%2d0&alg=3&opt=0&off=948,-1" alt="" height="1" width="1"/> | |
41 | </div> | |
42 | <!-- ros [r20070521-1832-ronr-v1-13-5:1.13.5] c17-ad-rubics-ros4.cnet.com::3971599280 2008.01.13.18.23.44 --><!-- ros t 0.0.0.0.0.0.0.0 --><!-- MAC [r20071210-1033-DynamicVars:1.13.8] c13-b2b-publish-web2.cnet.com::39603120 2008.01.14.02.23.42 --><!-- MAC T 68B.68B.68D.68E --> | |
43 | <ul class="cnbLinks"> | |
44 | <li>BNET Business Network: </li> | |
45 | <li><a href="http://www.bnet.com">BNET</a> |</li> | |
46 | <li><a href="http://techrepublic.com.com">TechRepublic</a> |</li> | |
47 | <li><a href="http://www.zdnet.com">ZDNet</a></li> | |
48 | </ul> | |
49 | </div><!-- /eyebrowsInner --> | |
50 | </div><!-- /eyebrowsBanner --> | |
51 | <div id="masthead"> | |
52 | <a id="logo" href="http://techrepublic.com.com"></a> | |
53 | ||
54 | ||
55 | ||
56 | <ul class="tool"> | |
57 | <li><a href="/5265-11518-0.html" class="blue">My Workspace</a> | <a href="http://nl.com.com/acct_mgmt.sc?brand=techrepublic" class="blue">My Newsletters</a></li> | |
58 | <li><a href="/1320-4-55.html?path=/5213-6257-0.html" class="orange normal">Log in</a> | <a href="/1301-4-55.html?path=/5213-6257-0.html" class="orange normal">Get a free membership</a></li> | |
59 | </ul> | |
60 | ||
61 | ||
62 | ||
63 | </div><!-- /masthead --> | |
64 | ||
65 | ||
66 | <div id="main"> | |
67 | <ul id="headerNav"> | |
68 | <li><a href="http://techrepublic.com.com/">Home</a></li> | |
69 | <li><a href="http://blogs.techrepublic.com.com/">Blogs</a></li> | |
70 | <li><a href="http://downloads.techrepublic.com.com/">Downloads</a></li> | |
71 | <li><a href="http://techrepublic.com.com/5221-6230-0.html">Forums</a></li> | |
72 | <li><a class="on" href="http://techrepublic.com.com/2001-10875-0.html">Articles</a></li> | |
73 | <li><a href="http://content.techrepublic.com.com/2350-1_11-0.html">Photos</a></li> | |
74 | <li><a href="http://video.techrepublic.com.com/2434-13789_11-167680.html">Videos</a></li> | |
75 | <li><a href="http://webcasts.techrepublic.com.com">Webcasts</a></li> | |
76 | <li><a href="http://whitepapers.techrepublic.com.com/">White Papers</a></li> | |
77 | <li><a href="http://software.techrepublic.com.com">Software</a></li> | |
78 | <li><a href="http://jobs.techrepublic.com.com/">Jobs</a></li> | |
79 | ||
80 | <li><a href="http://techrepublic.com.com/1393-6242-97.html">Store</a></li> | |
81 | ||
82 | </ul> | |
83 | ||
84 | <div id="topHTML"> | |
85 | <form action="http://search.techrepublic.com.com/index.php" method="get" name="tr_site_search" id="searchForm" class="articleForm"> | |
86 | ||
87 | <input id="searchInput" name="q" type="text" value="Search" onFocus="this.value=''" /> | |
88 | <select id="searchList" name="t"> | |
89 | <option value="11">in Articles</option> | |
90 | <option value="0">all of TechRepublic</option> | |
91 | </select> | |
92 | <input id="searchButton" name="go" value="Search" type="submit" /> | |
93 | ||
94 | </form> | |
95 | </div><!--/topHTML--> | |
96 | ||
97 | <div id="content" class="clearFix"> | |
98 | <div id="leftCol"> | |
99 | <div id="contentHeader"> | |
100 | <h1>Using arrays in bash</h1> | |
101 | <p class="byline">by <a href="http://search.techrepublic.com.com/search/Vincent Danen.html">Vincent Danen</a> | Aug 08, 2005 7:00:00 AM</p> | |
102 | ||
103 | <p class="tags"><b>Tags:</b> <a href="http://search.techrepublic.com.com/search/Linux.html">Linux</a>, <a href="http://search.techrepublic.com.com/search/Vincent Danen.html">Vincent Danen</a>, <a href="http://search.techrepublic.com.com/search/Foo.html">Foo</a>, <a href="http://search.techrepublic.com.com/search/Linux Tips Newsletter.html">Linux Tips Newsletter</a> </p> | |
104 | ||
105 | ||
106 | ||
107 | ||
108 | ||
109 | ||
110 | ||
111 | ||
112 | ||
113 | <div class="interact fadeBtmLeft clearFix"> | |
114 | <div class="cmntCount"> | |
115 | <a href="#comments"><span> | |
116 | ||
117 | ||
118 | ||
119 | ||
120 | ||
121 | ||
122 | ||
123 | ||
124 | ||
125 | ||
126 | ||
127 | ||
128 | ||
129 | ||
130 | ||
131 | ||
132 | ||
133 | ||
134 | 4 | |
135 | ||
136 | ||
137 | ||
138 | </span> comment(s)</a> | |
139 | </div> | |
140 | <ul class="toolbar"> | |
141 | ||
142 | ||
143 | ||
144 | <li class="share"><a title="Email this to a friend" href="javascript:usrActionReg(this,19);">Email</a></li> | |
145 | ||
146 | <li class="save"><a title="Save this to my Workspace" href="http://techrepublic.com.com/5262-6257-0.html?link=http%3A%2F%2Farticles.techrepublic.com.com%2F5100-1035_11-5820685.html%3Fpart%3Drss%26tag%3Dfeed%26subj%3Dtr&title=Using+arrays+in+bash&path=http%3A%2F%2Farticles.techrepublic.com.com%2F5100-1035_11-5820685.html%3Fpart%3Drss%26tag%3Dfeed%26subj%3Dtr">Save</a></li> | |
147 | <li class="print"><a title="Printer-friendly version" href="javascript:usrActionReg(this,20);">Print</a></li> | |
148 | <li class="digg"><a href="http://digg.com/submit?phase=2&url=http://articles.techrepublic.com.com/5100-1035_11-5820685.html&title=Using+arrays+in+bash&bodytext=Learn+two+ways+two+declare+an+array+in+bash+in+this+Linux+tip.&topic=tech_news" class="last">Digg This</a></li> | |
149 | ||
150 | ||
151 | ||
152 | ||
153 | ||
154 | ||
155 | ||
156 | ||
157 | ||
158 | ||
159 | ||
160 | ||
161 | ||
162 | ||
163 | ||
164 | ||
165 | <li class="recommend"><a href="http://articles.techrepublic.com.com/1320-4-55.html?path=http://articles.techrepublic.com.com/5100-10878_11-5820685.html" TITLE="Click to recommend" class="last"></a></li> | |
166 | ||
167 | <li class="vote"><div id="votecount" class="votecount" TITLE="How many people recommended this item">1 </div></li> | |
168 | ||
169 | <script language="JavaScript"> | |
170 | var http = createRequestObject(); | |
171 | var existing_votes = ''; | |
172 | ||
173 | function createRequestObject() | |
174 | { | |
175 | var ro; | |
176 | var browser = navigator.appName; | |
177 | if(browser == "Microsoft Internet Explorer"){ | |
178 | ro = new ActiveXObject("Microsoft.XMLHTTP"); | |
179 | }else{ | |
180 | ro = new XMLHttpRequest(); | |
181 | } | |
182 | return ro; | |
183 | } | |
184 | ||
185 | function Set_Cookie(name, value, expires, path) | |
186 | { | |
187 | // set time, it's in milliseconds | |
188 | var today = new Date(); | |
189 | today.setTime( today.getTime() ); | |
190 | ||
191 | expires = expires * 1000 * 60 * 60 * 24; | |
192 | var expires_date = new Date( today.getTime() + (expires) ); | |
193 | ||
194 | document.cookie = name + "=" + escape( value ) + ";expires=" + expires_date.toGMTString() + ";path=" + path; | |
195 | ||
196 | } | |
197 | ||
198 | function sendVote() | |
199 | { | |
200 | http.open('get', ''); | |
201 | http.onreadystatechange = handleResponse; | |
202 | http.send(null); | |
203 | } | |
204 | ||
205 | function handleResponse() | |
206 | { | |
207 | if(http.readyState == 4) | |
208 | { | |
209 | var response = http.responseText; | |
210 | var temp_array = new Array(); | |
211 | temp_array = response.split('~'); | |
212 | var ranking = temp_array[0]; | |
213 | ||
214 | if (ranking > 0) { | |
215 | ranking = ranking; | |
216 | } | |
217 | ||
218 | // Replace with ajax magic | |
219 | document.getElementById('votecount').innerHTML = ranking; | |
220 | ||
221 | // Remove the thumbs | |
222 | var voter = document.getElementById('recommend'); | |
223 | voter.className = "thanks"; | |
224 | voter.innerHTML = ""; | |
225 | ||
226 | Set_Cookie('service',(existing_votes + '~85140'),30,'/'); | |
227 | } | |
228 | } | |
229 | </script> | |
230 | ||
231 | ||
232 | </ul><!-- /toolbar --> | |
233 | </div><!-- /interact --> | |
234 | </div><!-- /contentHeader --> | |
235 | ||
236 | <div id="articleText"> | |
237 | <p class="takeaway"><b>Takeaway:</b> Learn two ways two declare an array in bash in this Linux tip.</p> | |
238 | ||
239 | <div class="related"> | |
240 | <div class="relatedBg"> | |
241 | <!--Medusa Related Content--> | |
242 | <script type="text/javascript" src="http://service.techrepublic.com.com/wi?spot=related-js&format=text&count=5&null=true&id=TR.TA.1.5820685&referer=http%3A%2F%2Fwww.google.com%2Fsearch%3Fhl%3Dcs%26client%3Diceweasel-a%26rls%3Dorg.debian%253Acs-CZ%253Aunofficial%26q%3Dbash%2Barray%26btnG%3DHledat%26lr%3D"></script> | |
243 | <script type="text/javascript">getrelatedContent()</script> | |
244 | <!--/Medusa Related Content--> | |
245 | </div><!--relatedBg--> | |
246 | </div><!-- /related --> | |
247 | ||
248 | <p>Assigning variables in bash is easily done and extremely\r | |
249 | useful, but like other programming languages, bash can also use arrays. This is\r | |
250 | particularly handy when you want to read the contents of a file into an array or\r | |
251 | simply keep your scripts more organized and logical.</p>\r | |
252 | \r | |
253 | <p>There are two ways of declaring an array:</p>\r | |
254 | \r | |
255 | <pre><code><br>declare -a FOO<br></code></pre>\r | |
256 | \r | |
257 | <p>This creates an empty array called FOO. You can also declare\r | |
258 | an array by assigning values to it:</p>\r | |
259 | \r | |
260 | <pre><code><br>FOO[2] = 'bar'<br></codE></pre>\r | |
261 | \r | |
262 | <p>This assigns the third element of the array to the value\r | |
263 | 'bar'. In this instance, FOO[0] and FOO[1] are also\r | |
264 | created, but their values are empty.</p>\r | |
265 | \r | |
266 | <p>To populate an array, use:</p>\r | |
267 | \r | |
268 | <pre><code><br>FOO=( bar string 'some text' )<br></code></pre>\r | |
269 | \r | |
270 | <p>This assigns the first element (FOO[0])\r | |
271 | to 'bar', the second (FOO[1]) to 'string' and the final element (FOO[3]) to\r | |
272 | 'some text'. Notice that the array elements are separated by a blank space, so\r | |
273 | if a value contains white spaces it must be quoted.</p>\r | |
274 | \r | |
275 | <p>To use an array, it is referred to as $FOO[2]\r | |
276 | but it also needs to be surrounded in curly braces, otherwise bash will not\r | |
277 | expand it correctly:</p>\r | |
278 | \r | |
279 | <pre><code><br>$ echo {$FOO[2]}<br>some text<br></code></pre>\r | |
280 | \r | |
281 | <p>To loop through an array, you can use a piece of shell code\r | |
282 | like the following:</p>\r | |
283 | \r | |
284 | <pre><code><br>\r | |
285 | #!/bin/sh</pre><pre>FOO=( bar string 'some text')<br>foonum=${#FOO}<br>\r | |
286 |