2019-04-19T01:15:50+00:00http://rrevanth.github.io/Feed tagged CODE - Revanth's Blog I am a developer, photography enthusiast, and self-proclaimed music connoisseur.This is where I write about awesome things that intrigue me. Revanth RevooriPython Snippets2015-03-02T23:14:34+00:002015-03-02T23:14:34+00:00http://rrevanth.github.io/blog/2015/03/pythonsnippets/<p>Hi there,
Here is a set of small scripts, which demonstrate some features of
Python programming.</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td><td class="code"><pre><span class="c1"># this is a comment
</span>
<span class="c1">#! python
</span>
<span class="c1"># integer variables
</span><span class="n">SPAM</span> <span class="o">=</span> <span class="mi">1</span> </pre></td></tr></tbody></table></code></pre></figure>
<!--more-->
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="k">print</span> <span class="s">"Hello, Python"</span>
<span class="c1">#! python
# string variable
</span>
<span class="n">STRING</span> <span class="o">=</span> <span class="s">"# This is not a comment."</span>
<span class="k">print</span> <span class="n">STRING</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># integer arith
</span>
<span class="n">a</span><span class="o">=</span><span class="mi">4</span>
<span class="k">print</span> <span class="n">a</span>
<span class="n">b</span><span class="o">=</span><span class="mi">12</span><span class="o">+</span><span class="mi">5</span>
<span class="k">print</span> <span class="n">b</span>
<span class="n">c</span><span class="o">=</span><span class="n">b</span><span class="o">%</span><span class="n">a</span>
<span class="k">print</span> <span class="n">c</span>
<span class="c1">#! python
</span>
<span class="c1"># trailing comma
</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">256</span><span class="o">*</span><span class="mi">256</span>
<span class="k">print</span> <span class="s">'The value of i is'</span><span class="p">,</span> <span class="n">i</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Fibonacci series:
# the sum of two elements defines the next
</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
<span class="k">while</span> <span class="n">b</span> <span class="o"><</span> <span class="mi">200</span><span class="p">:</span>
<span class="k">print</span> <span class="n">b</span><span class="p">,</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>
<span class="c1">#! python
</span>
<span class="c1"># input and operator if
</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">raw_input</span><span class="p">(</span><span class="s">"Please enter an integer: "</span><span class="p">))</span>
<span class="k">if</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">print</span> <span class="s">'Negative changed to zero'</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">print</span> <span class="s">'Zero'</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">print</span> <span class="s">'Single'</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span> <span class="s">'More'</span>
<span class="c1">#! python
</span>
<span class="c1"># operator for:
</span>
<span class="c1"># Measure some strings:
</span><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="s">'cat'</span><span class="p">,</span> <span class="s">'window'</span><span class="p">,</span> <span class="s">'defenestrate'</span><span class="p">]</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">a</span><span class="p">:</span>
<span class="k">print</span> <span class="n">x</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="c1">#! python
</span>
<span class="c1"># range function
</span>
<span class="k">print</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="k">print</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
<span class="k">print</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="s">'Mary'</span><span class="p">,</span> <span class="s">'had'</span><span class="p">,</span> <span class="s">'a'</span><span class="p">,</span> <span class="s">'little'</span><span class="p">,</span> <span class="s">'lamb'</span><span class="p">]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">a</span><span class="p">)):</span>
<span class="k">print</span> <span class="n">i</span><span class="p">,</span> <span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="c1">#! python
</span>
<span class="c1"># break operator
# prime numbers
</span>
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1000</span><span class="p">):</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="k">if</span> <span class="n">n</span> <span class="o">%</span> <span class="n">x</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="s">'equals'</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="s">'*'</span><span class="p">,</span> <span class="n">n</span><span class="o">/</span><span class="n">x</span>
<span class="k">break</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># loop fell through without finding a factor
</span> <span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="s">'is a prime number'</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1">#pass statement does nothing.
#It can be used when a statement is required syntactically but the program requires no action. For example:
</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="k">pass</span> <span class="c1"># Busy-wait for keyboard interrupt
</span>
<span class="c1">#! python
</span>
<span class="c1"># Defining Functions
</span><span class="k">def</span> <span class="nf">fib</span><span class="p">(</span><span class="n">n</span><span class="p">):</span> <span class="c1"># write Fibonacci series up to n
</span> <span class="s">"""Print a Fibonacci series up to n."""</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
<span class="k">while</span> <span class="n">b</span> <span class="o"><</span> <span class="n">n</span><span class="p">:</span>
<span class="k">print</span> <span class="n">b</span><span class="p">,</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>
<span class="c1"># Now call the function we just defined:
</span><span class="n">fib</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre><span class="err">!</span> <span class="n">python</span>
<span class="c1"># function that returns a list of the numbers of the Fibonacci series
</span>
<span class="k">def</span> <span class="nf">fib2</span><span class="p">(</span><span class="n">n</span><span class="p">):</span> <span class="c1"># return Fibonacci series up to n
</span> <span class="s">"""Return a list containing the Fibonacci series up to n."""</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
<span class="k">while</span> <span class="n">b</span> <span class="o"><</span> <span class="n">n</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> <span class="c1"># see below
</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>
<span class="k">return</span> <span class="n">result</span>
<span class="c1">#===================================
</span><span class="n">f100</span> <span class="o">=</span> <span class="n">fib2</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span> <span class="c1"># call it
</span><span class="k">print</span> <span class="n">f100</span> <span class="c1"># write the result</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</pre></td><td class="code"><pre><span class="c1">#! python
# work with strings
</span>
<span class="c1"># Strings can be concatenated (glued together) with the + operator, and repeated with *:
</span>
<span class="n">word</span> <span class="o">=</span> <span class="s">'Help'</span> <span class="o">+</span> <span class="s">'A'</span>
<span class="k">print</span> <span class="n">word</span>
<span class="k">print</span> <span class="s">'<'</span> <span class="o">+</span> <span class="n">word</span><span class="o">*</span><span class="mi">5</span> <span class="o">+</span> <span class="s">'>'</span>
<span class="c1"># Two string literals next to each other are automatically concatenated;
# the first line above could also have been written "word = 'Help' 'A'";
# this only works with two literals, not with arbitrary string expressions:
</span>
<span class="n">st</span><span class="o">=</span><span class="s">'str'</span> <span class="s">'ing'</span> <span class="c1"># <- This is ok
</span><span class="k">print</span> <span class="n">st</span>
<span class="n">st</span><span class="o">=</span><span class="s">'str'</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="s">'ing'</span> <span class="c1"># <- This is ok
</span><span class="k">print</span> <span class="n">st</span>
<span class="c1"># Strings can be subscripted (indexed); like in C, the first character of a string
# has subscript (index) 0. There is no separate character type; a character is
# simply a string of size one. Like in Icon, substrings can be specified with
# the slice notation: two indices separated by a colon.
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span>
<span class="c1"># Slice indices have useful defaults; an omitted first index defaults to zero,
# an omitted second index defaults to the size of the string being sliced.
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># The first two characters
</span><span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="c1"># All but the first two characters
</span>
<span class="c1"># Python strings cannot be changed. Assigning to an indexed position in the string results in an error:
# However, creating a new string with the combined content is easy and efficient:
</span>
<span class="k">print</span> <span class="s">'x'</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="k">print</span> <span class="s">'Splat'</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
<span class="c1"># Here's a useful invariant of slice operations: s[:i] + s[i:] equals s.
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span>
<span class="c1"># Degenerate slice indices are handled gracefully: an index that is too large is replaced
# by the string size, an upper bound smaller than the lower bound returns an empty string.
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">100</span><span class="p">]</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">10</span><span class="p">:]</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">1</span><span class="p">]</span>
<span class="c1"># Indices may be negative numbers, to start counting from the right. For example:
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># The last character
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># The last-but-one character
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="c1"># The last two characters
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># All but the last two characters
</span>
<span class="c1"># But note that -0 is really the same as 0, so it does not count from the right!
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># (since -0 equals 0)
</span>
<span class="c1"># Out-of-range negative slice indices are truncated, but don't try this for single-element (non-slice) indices:
</span>
<span class="k">print</span> <span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">100</span><span class="p">:]</span>
<span class="c1"># print word[-10] # error
</span>
<span class="c1">#The best way to remember how slices work is to think of the indices as pointing between characters,
#with the left edge of the first character numbered 0. Then the right edge of the last character
#of a string of n characters has index n, for example:
</span>
<span class="c1"># +---+---+---+---+---+
# | H | e | l | p | A |
# +---+---+---+---+---+
# 0 1 2 3 4 5
#-5 -4 -3 -2 -1
</span>
<span class="n">s</span> <span class="o">=</span> <span class="s">'supercalifragilisticexpialidocious'</span>
<span class="k">print</span> <span class="n">s</span>
<span class="k">print</span> <span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Default Argument Values
</span>
<span class="k">def</span> <span class="nf">ask_ok</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">retries</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">complaint</span><span class="o">=</span><span class="s">'Yes or no, please!'</span><span class="p">):</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="n">ok</span> <span class="o">=</span> <span class="nb">raw_input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
<span class="k">if</span> <span class="n">ok</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'y'</span><span class="p">,</span> <span class="s">'ye'</span><span class="p">,</span> <span class="s">'yes'</span><span class="p">):</span> <span class="k">return</span> <span class="bp">True</span>
<span class="k">if</span> <span class="n">ok</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'n'</span><span class="p">,</span> <span class="s">'no'</span><span class="p">,</span> <span class="s">'nop'</span><span class="p">,</span> <span class="s">'nope'</span><span class="p">):</span> <span class="k">return</span> <span class="bp">False</span>
<span class="n">retries</span> <span class="o">=</span> <span class="n">retries</span> <span class="o">-</span> <span class="mi">1</span>
<span class="k">if</span> <span class="n">retries</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span> <span class="k">raise</span> <span class="nb">IOError</span><span class="p">,</span> <span class="s">'refusenik user'</span>
<span class="k">print</span> <span class="n">complaint</span>
<span class="c1">#==============================================================
</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">5</span>
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">arg</span><span class="o">=</span><span class="n">i</span><span class="p">):</span>
<span class="k">print</span> <span class="n">arg</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">6</span>
<span class="n">f</span><span class="p">()</span>
<span class="c1">#==============================================================
</span>
<span class="n">z</span><span class="o">=</span><span class="n">ask_ok</span><span class="p">(</span><span class="s">'really quit???'</span><span class="p">)</span>
<span class="k">if</span> <span class="n">z</span><span class="o">==</span><span class="bp">False</span> <span class="p">:</span>
<span class="k">print</span> <span class="s">"bad"</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Lambda Forms
</span>
<span class="k">def</span> <span class="nf">make_incrementor</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="k">return</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">n</span>
<span class="c1">#==================================
</span><span class="n">f</span> <span class="o">=</span> <span class="n">make_incrementor</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
<span class="k">print</span> <span class="n">f</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">print</span> <span class="n">f</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="k">print</span> <span class="n">f</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span>
<span class="o">//===================================================================================</span>
<span class="o">//</span>
<span class="o">//===================================================================================</span>
<span class="c1">#! python
</span>
<span class="c1"># speed test
</span><span class="n">nn</span><span class="o">=</span><span class="mi">10000000</span>
<span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="n">s</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="k">print</span> <span class="s">"beginning..."</span>
<span class="k">while</span> <span class="n">i</span>
<span class="c1">#! python
</span>
<span class="c1"># raw input of strings only!
</span>
<span class="n">st</span> <span class="o">=</span> <span class="nb">raw_input</span><span class="p">(</span><span class="s">""</span><span class="p">)</span>
<span class="k">print</span> <span class="n">st</span>
<span class="n">st</span><span class="o">=</span><span class="n">st</span><span class="o">*</span><span class="mi">3</span> <span class="c1"># triple the string
</span><span class="k">print</span> <span class="n">st</span>
<span class="c1">#! python
</span>
<span class="c1"># math
</span>
<span class="kn">import</span> <span class="nn">math</span>
<span class="k">print</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="mf">4.0</span><span class="p">)</span>
<span class="k">print</span> <span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># random
</span>
<span class="kn">import</span> <span class="nn">random</span>
<span class="k">print</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">([</span><span class="s">'apple'</span><span class="p">,</span> <span class="s">'pear'</span><span class="p">,</span> <span class="s">'banana'</span><span class="p">])</span>
<span class="k">print</span> <span class="n">random</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="nb">xrange</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span> <span class="mi">10</span><span class="p">)</span> <span class="c1"># sampling without replacement
</span>
<span class="k">print</span> <span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span> <span class="c1"># random float
</span>
<span class="k">print</span> <span class="n">random</span><span class="o">.</span><span class="n">randrange</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span> <span class="c1"># random integer chosen from range(6)
</span>
<span class="c1">#! python
</span>
<span class="k">def</span> <span class="nf">perm</span><span class="p">(</span><span class="n">l</span><span class="p">):</span>
<span class="c1"># Compute the list of all permutations of l
</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[</span><span class="n">l</span><span class="p">]</span>
<span class="n">r</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># here is new list with all permutations!
</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">l</span><span class="p">)):</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">l</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">l</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">perm</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">p</span><span class="p">:</span>
<span class="n">r</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l</span><span class="p">[</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">)</span>
<span class="k">return</span> <span class="n">r</span>
<span class="c1">#==============================================
</span><span class="n">a</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
<span class="k">print</span> <span class="n">perm</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="c1">#! python
</span>
<span class="n">a</span><span class="o">=</span><span class="mi">2</span><span class="o">+</span><span class="mf">3j</span>
<span class="n">b</span><span class="o">=</span><span class="mi">2</span><span class="o">-</span><span class="mf">3j</span>
<span class="k">print</span> <span class="n">a</span><span class="o">*</span><span class="n">a</span>
<span class="k">print</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span>
<span class="k">print</span> <span class="n">a</span><span class="o">.</span><span class="n">real</span>
<span class="k">print</span> <span class="n">b</span><span class="o">.</span><span class="n">imag</span>
<span class="c1">#! python
</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">raw_input</span><span class="p">(</span><span class="s">"Please enter a number: "</span><span class="p">))</span>
<span class="k">break</span>
<span class="k">except</span> <span class="nb">ValueError</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"Oops! That was no valid number. Try again..."</span>
<span class="c1">#! python
</span>
<span class="kn">import</span> <span class="nn">string</span><span class="p">,</span> <span class="n">sys</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s">'myfile.txt'</span><span class="p">)</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
<span class="n">i</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="n">s</span><span class="p">))</span>
<span class="k">except</span> <span class="nb">IOError</span><span class="p">,</span> <span class="p">(</span><span class="n">errno</span><span class="p">,</span> <span class="n">strerror</span><span class="p">):</span>
<span class="k">print</span> <span class="s">"I/O error(</span><span class="si">%</span><span class="s">s): </span><span class="si">%</span><span class="s">s"</span> <span class="o">%</span> <span class="p">(</span><span class="n">errno</span><span class="p">,</span> <span class="n">strerror</span><span class="p">)</span>
<span class="k">except</span> <span class="nb">ValueError</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"Could not convert data to an integer."</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"Unexpected error:"</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">raise</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
</pre></td><td class="code"><pre><span class="c1">#! python
# work with lists
</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="s">'spam'</span><span class="p">,</span> <span class="s">'eggs'</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">1234</span><span class="p">]</span>
<span class="k">print</span> <span class="s">" list a="</span><span class="p">,</span><span class="n">a</span>
<span class="c1"># list indices start at 0,
</span><span class="k">print</span> <span class="s">'a[0]='</span><span class="p">,</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">print</span> <span class="s">'a[3]='</span><span class="p">,</span> <span class="n">a</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
<span class="k">print</span> <span class="s">'a[-2]='</span><span class="p">,</span> <span class="n">a</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
<span class="c1"># lists can be sliced, concatenated and so on:
</span><span class="k">print</span> <span class="s">"a[1:-1]="</span><span class="p">,</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="s">'bacon'</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="mi">2</span><span class="p">]</span>
<span class="k">print</span> <span class="mi">3</span><span class="o">*</span><span class="n">a</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="s">'Boe!'</span><span class="p">]</span>
<span class="c1"># possible to change individual elements of a list:
</span>
<span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="mi">23</span>
<span class="k">print</span> <span class="s">"changing a[2]="</span><span class="p">,</span> <span class="n">a</span>
<span class="c1">#Assignment to slices is also possible, and this can even change the size of the list:
</span>
<span class="c1"># Replace some items:
</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">12</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span>
<span class="c1"># Remove some:
</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">print</span> <span class="n">a</span>
<span class="c1"># Insert some:
</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">'bletch'</span><span class="p">,</span> <span class="s">'xyzzy'</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span>
<span class="n">a</span><span class="p">[:</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span> <span class="c1"># Insert (a copy of) itself at the beginning
</span><span class="k">print</span> <span class="n">a</span>
<span class="k">print</span> <span class="s">"length="</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="c1"># possible to nest lists (create lists containing other lists)
</span>
<span class="n">q</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="n">p</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
<span class="k">print</span> <span class="s">" nest list="</span><span class="p">,</span> <span class="n">p</span>
<span class="k">print</span> <span class="s">'length ='</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="k">print</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">print</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">'xtra'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">p</span>
<span class="k">print</span> <span class="n">q</span>
<span class="c1">#! python
</span>
<span class="c1"># more work with lists
</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mf">66.6</span><span class="p">,</span> <span class="mi">333</span><span class="p">,</span> <span class="mi">333</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1234.5</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="mi">333</span><span class="p">),</span> <span class="n">a</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="mf">66.6</span><span class="p">),</span> <span class="n">a</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">'x'</span><span class="p">)</span>
<span class="n">a</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="k">print</span> <span class="n">a</span>
<span class="n">a</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">333</span><span class="p">)</span>
<span class="k">print</span> <span class="n">a</span>
<span class="k">print</span> <span class="n">a</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="mi">333</span><span class="p">)</span>
<span class="n">a</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">333</span><span class="p">)</span>
<span class="k">print</span> <span class="n">a</span>
<span class="n">a</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span>
<span class="k">print</span> <span class="n">a</span>
<span class="n">a</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
<span class="k">print</span> <span class="n">a</span>
<span class="c1">#! python
</span>
<span class="c1"># huge list making
</span>
<span class="n">nn</span><span class="o">=</span><span class="mi">1000000</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">i</span><span class="o">=</span><span class="mi">0</span>
<span class="k">while</span> <span class="n">i</span>
<span class="c1">#! python
</span>
<span class="c1"># Using Lists as Stacks
</span>
<span class="n">stack</span> <span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">]</span>
<span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">6</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span>
<span class="k">print</span> <span class="n">stack</span>
<span class="n">x</span><span class="o">=</span><span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
<span class="k">print</span> <span class="s">"popped "</span><span class="p">,</span><span class="n">x</span>
<span class="k">print</span> <span class="n">stack</span>
<span class="n">x</span><span class="o">=</span><span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
<span class="k">print</span> <span class="s">"popped "</span><span class="p">,</span><span class="n">x</span>
<span class="n">x</span><span class="o">=</span><span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
<span class="k">print</span> <span class="s">"popped "</span><span class="p">,</span><span class="n">x</span>
<span class="k">print</span> <span class="n">stack</span>
<span class="c1">#! python
</span>
<span class="c1"># Using Lists as Queues
</span>
<span class="n">queue</span> <span class="o">=</span> <span class="p">[</span><span class="s">"Eric"</span><span class="p">,</span> <span class="s">"John"</span><span class="p">,</span> <span class="s">"Michael"</span><span class="p">]</span>
<span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">"Terry"</span><span class="p">)</span> <span class="c1"># Terry arrives
</span><span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">"Graham"</span><span class="p">)</span> <span class="c1"># Graham arrives
</span><span class="k">print</span> <span class="n">queue</span>
<span class="n">s</span><span class="o">=</span><span class="n">queue</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s</span>
<span class="n">s</span><span class="o">=</span><span class="n">queue</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s</span>
<span class="k">print</span> <span class="n">queue</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># The del statement
</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">66.6</span><span class="p">,</span> <span class="mi">333</span><span class="p">,</span> <span class="mi">333</span><span class="p">,</span> <span class="mf">1234.5</span><span class="p">]</span>
<span class="k">del</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span>
<span class="k">del</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span>
<span class="k">print</span> <span class="n">a</span>
<span class="c1">#! python
</span>
<span class="c1"># filter of sequence
</span>
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> <span class="k">return</span> <span class="n">x</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">x</span> <span class="o">%</span> <span class="mi">3</span> <span class="o">!=</span> <span class="mi">0</span>
<span class="n">res</span><span class="o">=</span><span class="nb">filter</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">25</span><span class="p">))</span>
<span class="k">print</span> <span class="n">res</span>
<span class="c1">#! python
</span>
<span class="c1"># map of sequence
</span>
<span class="k">def</span> <span class="nf">cube</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> <span class="k">return</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">x</span>
<span class="n">res</span><span class="o">=</span><span class="nb">map</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">11</span><span class="p">))</span>
<span class="k">print</span> <span class="n">res</span>
<span class="c1">#! python
</span>
<span class="c1"># reduce(func, sequence)" returns a single value constructed by
# calling the binary function func on the first two items of the sequence,
# then on the result and the next item, and so on
</span>
<span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">):</span> <span class="k">return</span> <span class="n">x</span><span class="o">+</span><span class="n">y</span>
<span class="n">r</span><span class="o">=</span><span class="nb">reduce</span><span class="p">(</span><span class="n">add</span><span class="p">,</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">11</span><span class="p">))</span>
<span class="k">print</span> <span class="n">r</span> <span class="c1"># 55</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># A tuple consists of a number of values separated by commas
</span>
<span class="n">t</span> <span class="o">=</span> <span class="mi">12345</span><span class="p">,</span> <span class="mi">54321</span><span class="p">,</span> <span class="s">'hello!'</span> <span class="c1"># tuple packing
</span><span class="k">print</span> <span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">print</span> <span class="n">t</span>
<span class="p">(</span><span class="mi">12345</span><span class="p">,</span> <span class="mi">54321</span><span class="p">,</span> <span class="s">'hello!'</span><span class="p">)</span>
<span class="c1"># Tuples may be nested:
</span><span class="n">u</span> <span class="o">=</span> <span class="n">t</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="k">print</span> <span class="n">u</span> <span class="c1"># ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Dictionaries are sometimes as ``associative memories'' or ``associative arrays''
</span>
<span class="n">tel</span> <span class="o">=</span> <span class="p">{</span><span class="s">'jack'</span><span class="p">:</span> <span class="mi">4098</span><span class="p">,</span> <span class="s">'sape'</span><span class="p">:</span> <span class="mi">4139</span><span class="p">}</span>
<span class="n">tel</span><span class="p">[</span><span class="s">'guido'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">4127</span>
<span class="k">print</span> <span class="n">tel</span>
<span class="k">print</span> <span class="n">tel</span><span class="p">[</span><span class="s">'jack'</span><span class="p">]</span>
<span class="k">del</span> <span class="n">tel</span><span class="p">[</span><span class="s">'sape'</span><span class="p">]</span>
<span class="n">tel</span><span class="p">[</span><span class="s">'irv'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">4127</span>
<span class="k">print</span> <span class="n">tel</span>
<span class="k">print</span> <span class="n">tel</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
<span class="n">x</span><span class="o">=</span><span class="n">tel</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">'guido'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">x</span>
<span class="c1"># The dict() constructor builds dictionaries directly from lists
# of key-value pairs stored as tuples. When the pairs form a pattern,
# list comprehensions can compactly specify the key-value list.
</span>
<span class="n">d</span><span class="o">=</span><span class="nb">dict</span><span class="p">([(</span><span class="s">'sape'</span><span class="p">,</span> <span class="mi">4139</span><span class="p">),</span> <span class="p">(</span><span class="s">'guido'</span><span class="p">,</span> <span class="mi">4127</span><span class="p">),</span> <span class="p">(</span><span class="s">'jack'</span><span class="p">,</span> <span class="mi">4098</span><span class="p">)])</span>
<span class="k">print</span> <span class="n">d</span>
<span class="n">vec</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
<span class="n">dd</span><span class="o">=</span><span class="nb">dict</span><span class="p">([(</span><span class="n">x</span><span class="p">,</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">vec</span><span class="p">])</span> <span class="c1"># use a list comprehension
</span><span class="k">print</span> <span class="n">dd</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Standard Module sys
</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">'c:</span><span class="se">\t</span><span class="s">emp'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">version</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">maxint</span>
<span class="c1">#! python
#=======================================================
# dir() is used to find out which names a module defines
</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="k">print</span> <span class="nb">dir</span><span class="p">(</span><span class="n">sys</span><span class="p">)</span>
<span class="c1"># Without arguments, dir() lists the names you have defined currently</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># convert any value to a string: pass it to the repr() or str()
</span>
<span class="n">s</span> <span class="o">=</span> <span class="s">'Hello, world.'</span>
<span class="k">print</span> <span class="nb">str</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="k">print</span> <span class="nb">repr</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="k">print</span> <span class="nb">str</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span>
<span class="k">print</span> <span class="nb">repr</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="mi">10</span> <span class="o">*</span> <span class="mf">3.25</span>
<span class="n">y</span> <span class="o">=</span> <span class="mi">200</span> <span class="o">*</span> <span class="mi">200</span>
<span class="n">s</span> <span class="o">=</span> <span class="s">'The value of x is '</span> <span class="o">+</span> <span class="nb">repr</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="s">', and y is '</span> <span class="o">+</span> <span class="nb">repr</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">+</span> <span class="s">'...'</span>
<span class="k">print</span> <span class="n">s</span>
<span class="c1"># The repr() of a string adds string quotes and backslashes:
</span><span class="n">hello</span> <span class="o">=</span> <span class="s">'hello, world</span><span class="se">\n</span><span class="s">'</span>
<span class="n">hellos</span> <span class="o">=</span> <span class="nb">repr</span><span class="p">(</span><span class="n">hello</span><span class="p">)</span>
<span class="k">print</span> <span class="n">hellos</span> <span class="c1"># 'hello, world\n'
</span>
<span class="c1"># The argument to repr() may be any Python object:
</span><span class="k">print</span> <span class="nb">repr</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="p">(</span><span class="s">'spam'</span><span class="p">,</span> <span class="s">'eggs'</span><span class="p">)))</span>
<span class="c1"># reverse quotes are convenient in interactive sessions:
</span><span class="k">print</span> <span class="sb">`x, y, ('spam', 'eggs')`</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># two ways to write a table of squares and cubes:
</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">11</span><span class="p">):</span>
<span class="k">print</span> <span class="nb">repr</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="nb">repr</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="c1"># Note trailing comma on previous line
</span> <span class="k">print</span> <span class="nb">repr</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<span class="k">print</span> <span class="s">'================================================='</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">):</span>
<span class="k">print</span> <span class="s">'</span><span class="si">%2</span><span class="s">d </span><span class="si">%3</span><span class="s">d </span><span class="si">%4</span><span class="s">d'</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="p">,</span> <span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="o">*</span><span class="n">x</span><span class="p">)</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># output results from running "python demo.py one two three"
# at the command line:
</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="k">print</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[]</span> <span class="c1"># ['demo.py', 'one', 'two', 'three']</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># String Pattern Matching - regular expression
</span>
<span class="kn">import</span> <span class="nn">re</span>
<span class="n">r</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">r'\bf[a-z]*'</span><span class="p">,</span> <span class="s">'which foot or hand fell fastest'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">r</span> <span class="c1"># ['foot', 'fell', 'fastest']
</span>
<span class="n">s</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">r'(\b[a-z]+) \1'</span><span class="p">,</span> <span class="s">r'\1'</span><span class="p">,</span> <span class="s">'cat in the the hat'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s</span> <span class="c1"># 'cat in the hat'
</span>
<span class="c1">#! python
</span>
<span class="c1"># dates are easily constructed and formatted
</span>
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">date</span>
<span class="n">now</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span>
<span class="k">print</span> <span class="n">now</span>
<span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2003</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="k">print</span> <span class="n">now</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">"</span><span class="si">%</span><span class="s">m-</span><span class="si">%</span><span class="s">d-</span><span class="si">%</span><span class="s">y or </span><span class="si">%</span><span class="s">d</span><span class="si">%</span><span class="s">b </span><span class="si">%</span><span class="s">Y is a </span><span class="si">%</span><span class="s">A on the </span><span class="si">%</span><span class="s">d day of </span><span class="si">%</span><span class="s">B"</span><span class="p">)</span>
<span class="c1"># dates support calendar arithmetic
</span>
<span class="n">birthday</span> <span class="o">=</span> <span class="n">date</span><span class="p">(</span><span class="mi">1964</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">31</span><span class="p">)</span>
<span class="n">age</span> <span class="o">=</span> <span class="n">now</span> <span class="o">-</span> <span class="n">birthday</span>
<span class="k">print</span> <span class="n">age</span><span class="o">.</span><span class="n">days</span> <span class="c1"># 14368</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># Internet Access
</span>
<span class="kn">import</span> <span class="nn">urllib2</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">urllib2</span><span class="o">.</span><span class="n">urlopen</span><span class="p">(</span><span class="s">'http://tycho.usno.navy.mil/cgi-bin/timer.pl'</span><span class="p">):</span>
<span class="k">if</span> <span class="s">'EST'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span> <span class="c1"># look for Eastern Standard Time
</span> <span class="k">print</span> <span class="n">line</span>
<span class="kn">import</span> <span class="nn">smtplib</span>
<span class="n">server</span> <span class="o">=</span> <span class="n">smtplib</span><span class="o">.</span><span class="n">SMTP</span><span class="p">(</span><span class="s">'localhost'</span><span class="p">)</span>
<span class="n">server</span><span class="o">.</span><span class="n">sendmail</span><span class="p">(</span><span class="s">'soothsayer@tmp.org'</span><span class="p">,</span> <span class="s">'jceasar@tmp.org'</span><span class="p">,</span>
<span class="s">"""To: jceasar@tmp.org
From: soothsayer@tmp.org
Beware the Ides of March.
"""</span><span class="p">)</span>
<span class="n">server</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
</pre></td><td class="code"><pre><span class="c1"># work with files
</span>
<span class="c1">#open file for write
</span>
<span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s">'c:/TEMP/workpy.txt'</span><span class="p">,</span><span class="s">'w'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">f</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"aaaaaaaaaaaaaaaaaaa</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"bbbbbbbbbbbbbb"</span><span class="p">);</span>
<span class="c1"># work with files
</span>
<span class="c1">#open file for read
</span>
<span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s">'c:/TEMP/workpy.txt'</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span>
<span class="c1"># line reading
</span>
<span class="n">s</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
<span class="k">print</span> <span class="n">s</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="c1"># work with files
</span>
<span class="c1">#open file for read
</span>
<span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s">'c:/TEMP/workpy.txt'</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span>
<span class="c1"># pieces reading
</span>
<span class="n">s1</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s1</span>
<span class="n">s2</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">19</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s2</span>
<span class="n">s2</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">25</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s2</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="c1"># work with files
</span>
<span class="c1">#open file for read
</span>
<span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s">'c:/TEMP/workpy.txt'</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span>
<span class="c1"># pieces reading
</span>
<span class="n">s1</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s1</span>
<span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
<span class="n">s2</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">19</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s2</span>
<span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
<span class="n">s2</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">25</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s2</span>
<span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="c1"># work with files
</span>
<span class="c1"># seek
</span>
<span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s">'c:/TEMP/workpy.txt'</span><span class="p">,</span><span class="s">'r+'</span><span class="p">)</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">'0123456789abcdef'</span><span class="p">)</span>
<span class="n">f</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1"># Go to the 6th byte in the file
</span><span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="n">f</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="c1"># Go to the 3rd byte before the end
</span><span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c1">#! python
</span>
<span class="c1"># The glob module provides a function for making file lists from
# directory wildcard searches:
</span>
<span class="kn">import</span> <span class="nn">glob</span>
<span class="n">s</span><span class="o">=</span><span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="s">'*.*'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">s</span> <span class="c1"># ['primes.py', 'random.py', 'quote.py']</span></pre></td></tr></tbody></table></code></pre></figure>
Bash Snippets2015-03-02T23:10:34+00:002015-03-02T23:10:34+00:00http://rrevanth.github.io/blog/2015/03/bashsnippets/<p>Set of small scripts, which demonstrate some features of bash programming.</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// <span class="nb">set </span>new prompt
//<span class="o">===================================================================================</span>
<span class="nv">PS1</span><span class="o">=</span><span class="s2">">"</span>
<span class="nv">PS1</span><span class="o">=</span><span class="s2">"[</span><span class="k">${</span><span class="nv">LOGNAME</span><span class="k">}</span><span class="s2">@</span><span class="k">$(</span><span class="nb">hostname</span><span class="k">)</span><span class="s2">] # "</span>
<span class="nv">PS1</span><span class="o">=</span><span class="s2">"[</span><span class="k">${</span><span class="nv">LOGNAME</span><span class="k">}</span><span class="s2">] # "</span>
<span class="nv">PS1</span><span class="o">=</span><span class="s1">'$PWD $ '</span></pre></td></tr></tbody></table></code></pre></figure>
<!--more-->
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// <span class="nb">set</span> <span class="o">(</span>and automatically create<span class="o">)</span> shell variable
//<span class="o">===================================================================================</span>
<span class="nv">$ </span><span class="nb">test</span><span class="o">=</span><span class="s2">"test"</span>
<span class="nv">$ homedir</span><span class="o">=</span><span class="s1">'pwd'</span>
<span class="nv">string</span><span class="o">=</span><span class="s2">"The man said </span><span class="se">\"</span><span class="s2"> hello </span><span class="se">\"</span><span class="s2">."</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// To use the variable within the shell, it is preceded by a <span class="err">$</span>
//<span class="o">===================================================================================</span>
<span class="nv">homedir</span><span class="o">=</span><span class="nv">$HOME</span>
<span class="nb">cd</span> <span class="nv">$homedir</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// how to print shell variable
//<span class="o">===================================================================================</span>
<span class="nb">echo </span>PS1
<span class="nb">echo</span> <span class="nv">$PS1</span>
<span class="nb">echo</span> <span class="nv">$USERNAME</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// predefined shell variables
//<span class="o">===================================================================================</span>
HOME name of <span class="nb">users </span>login directory
IFS internal field separators
PATH search path used <span class="k">for </span>finding commands
PS1 shell prompt
OSTYPE
USERNAME
SHELL </pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// The shell supports pattern matching
//<span class="o">===================================================================================</span>
<span class="k">*</span> Match all characters <span class="k">in </span>a string
? Match a single character
<span class="nb">ls</span> <span class="k">*</span>.dat</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
// Command Substitution
//<span class="o">===================================================================================</span>
<span class="nv">today</span><span class="o">=</span><span class="sb">`</span><span class="nb">date</span><span class="sb">`</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="code"><pre>//<span class="o">===================================================================================</span>
<span class="c">#---------------------------------------------------</span>
<span class="c"># empty sh script program</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># comments</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c"># this is comment</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># printing of string constant</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s1">'hello'</span>
<span class="nb">echo</span> <span class="s2">"hello"</span>
<span class="nb">echo </span>hello</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># declaration and printing of string variable</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">x</span><span class="o">=</span><span class="s1">'Wonderful new World'</span>
<span class="nb">echo</span> <span class="nv">$x</span>
<span class="nb">echo </span>x <span class="c"># just string 'x'</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># call of other programs</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">ls</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># indirect call of other programs</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">x</span><span class="o">=</span><span class="s1">'pwd'</span>
<span class="nv">$x</span>
<span class="nv">x</span><span class="o">=</span><span class="s1">'ls -l'</span>
<span class="nv">$x</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># indirect call with indirect parameters</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">u</span><span class="o">=</span><span class="s1">'-l'</span>
<span class="nv">x</span><span class="o">=</span><span class="s1">'ls '</span>
<span class="nv">$x</span> <span class="nv">$u</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># print current shell name ???</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="nv">$SHELL</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># Anything enclosed in double quotes is passed on exactly </span>
<span class="c"># as presented with the exception that the values of </span>
<span class="c"># shell variables are substituted</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">v1</span><span class="o">=</span><span class="s2">"abc "</span>
<span class="nv">v2</span><span class="o">=</span><span class="s2">"</span><span class="nv">$v1</span><span class="s2"> d"</span>
<span class="nb">echo</span> <span class="nv">$v1</span> <span class="nv">$v2</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># Any matter enclosed in single quotes is passed on </span>
<span class="c"># exactly as presented. The values of shell variables </span>
<span class="c"># are not substituted. </span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">v1</span><span class="o">=</span><span class="s2">"abc"</span>
<span class="nv">v2</span><span class="o">=</span><span class="s1">'$v1 d'</span>
<span class="nb">echo</span> <span class="nv">$v1</span> <span class="nv">$v2</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># Back quotes are used to enclose commands. An item</span>
<span class="c"># enclosed in back quotes is replaced by the standard</span>
<span class="c"># output of the command. Shell variable values</span>
<span class="c"># are substituted within back quotes.</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">date</span><span class="o">=</span><span class="sb">`</span><span class="nb">date</span><span class="sb">`</span>
<span class="nb">echo </span>the <span class="nb">date </span>is <span class="nv">$date</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># escaping</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">msg</span><span class="o">=</span><span class="sb">`</span><span class="nb">echo </span>Your Current Directory is <span class="se">\`</span><span class="nb">pwd</span><span class="se">\`</span><span class="sb">`</span>
<span class="nb">echo</span> <span class="nv">$msg</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># reading of text line from keyboard</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">read </span>x
<span class="nb">echo</span> <span class="nv">$x</span>
<span class="nb">echo</span> <span class="nv">$x</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># reading of text line from keyboard with help comment</span>
<span class="c"># echo without new line at the end</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="nt">-n</span> <span class="s2">"Input text line=? "</span>
<span class="nb">read </span>x
<span class="nb">echo</span> <span class="nv">$x</span>
<span class="nb">echo</span> <span class="nv">$x</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># syntax: many commands in one line !!!!</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"a"</span><span class="p">;</span> <span class="nb">echo</span> <span class="s2">"b"</span><span class="p">;</span> <span class="nb">echo</span> <span class="s2">"c"</span>
<span class="nv">var</span><span class="o">=</span>5<span class="p">;</span> <span class="nb">echo</span> <span class="sb">`</span><span class="nb">expr</span> <span class="nv">$var</span> + <span class="nv">$var</span><span class="sb">`</span> </pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># integer variable and its increment</span>
<span class="c"># does not works in sh !!!</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">var</span><span class="o">=</span>12345
<span class="nb">let </span><span class="nv">var</span><span class="o">=</span><span class="nv">$var</span>+1 <span class="c"># let is important</span>
<span class="nb">echo</span> <span class="nv">$var</span>
<span class="nv">v</span><span class="o">=</span>12345
<span class="nv">v</span><span class="o">=</span><span class="nv">$v</span>+1 <span class="c"># result "12345+1"</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># integer arithmetics - bash only !</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s1">'number=?'</span> <span class="p">;</span> <span class="nb">read </span>x
<span class="nb">let </span><span class="nv">y</span><span class="o">=</span><span class="nv">$x</span>+<span class="nv">$x</span> <span class="p">;</span> <span class="nb">echo</span> <span class="s1">'x+x='</span> <span class="nv">$y</span>
<span class="nb">let </span><span class="nv">y</span><span class="o">=</span><span class="nv">$x</span><span class="k">*</span><span class="nv">$x</span> <span class="p">;</span> <span class="nb">echo</span> <span class="s1">'square='</span> <span class="nv">$y</span>
<span class="nb">let </span><span class="nv">y</span><span class="o">=</span><span class="nv">$x</span>/3 <span class="p">;</span> <span class="nb">echo</span> <span class="s1">'x/3='</span> <span class="nv">$y</span>
<span class="nb">let </span><span class="nv">y</span><span class="o">=</span><span class="nv">$x</span>%7 <span class="p">;</span> <span class="nb">echo</span> <span class="s1">'x%7='</span> <span class="nv">$y</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># integer arithmetics in sh !!! using expr - slow</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">a</span><span class="o">=</span>123
<span class="nv">b</span><span class="o">=</span>12
<span class="nv">c</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$a</span> + <span class="nv">$b</span><span class="sb">`</span> <span class="c"># addition</span>
<span class="nb">echo</span> <span class="nv">$c</span>
<span class="nv">c</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$a</span> <span class="se">\*</span> <span class="nv">$b</span><span class="sb">`</span> <span class="c"># multiplication</span>
<span class="nb">echo</span> <span class="nv">$c</span>
<span class="nv">c</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$a</span> / <span class="nv">$b</span><span class="sb">`</span> <span class="c"># division</span>
<span class="nb">echo</span> <span class="nv">$c</span>
<span class="nv">c</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$a</span> % <span class="nv">$b</span><span class="sb">`</span> <span class="c"># residual</span>
<span class="nb">echo</span> <span class="nv">$c</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># very simple 'if' </span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s1">'number=?'</span>
<span class="nb">read </span>x
<span class="k">if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-eq</span> 5 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"five"</span>
<span class="k">fi</span> </pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># if ... else</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s1">'number=?'</span>
<span class="nb">read </span>x
<span class="k">if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-eq</span> 5 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"five"</span>
<span class="k">else
</span><span class="nb">echo</span> <span class="s2">"not 5"</span>
<span class="k">fi</span> </pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># if ... elif ... else</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s1">'number=?'</span>
<span class="nb">read </span>x
<span class="k">if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-eq</span> 5 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"five"</span>
<span class="k">elif</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-eq</span> 7 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"seven"</span>
<span class="k">else
</span><span class="nb">echo</span> <span class="s2">"not 5 and not 7"</span>
<span class="k">fi</span> </pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># comparison -lt and -gt, nested if</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="nt">-n</span> <span class="s1">'number=?'</span>
<span class="nb">read </span>x
<span class="k">if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-gt</span> 0 <span class="o">]</span>
<span class="k">then
if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-lt</span> 10 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"0 < x < 10"</span>
<span class="k">fi
fi</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># while loop - print first 10 integers from 0</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">x</span><span class="o">=</span>0
<span class="k">while</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-lt</span> 10 <span class="o">]</span>
<span class="k">do
</span><span class="nb">echo</span> <span class="nv">$x</span>
<span class="nb">let </span><span class="nv">x</span><span class="o">=</span><span class="nv">$x</span>+1
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># 10 random numbers generation</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">i</span><span class="o">=</span>0
<span class="k">while</span> <span class="o">[</span> <span class="nv">$i</span> <span class="nt">-lt</span> 10 <span class="o">]</span>
<span class="k">do
</span><span class="nv">x</span><span class="o">=</span><span class="nv">$RANDOM</span>
<span class="nb">echo</span> <span class="nv">$x</span>
<span class="nb">let </span><span class="nv">i</span><span class="o">=</span><span class="nv">$i</span>+1
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># endless loop: interrupting by ctrl-c</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="k">while</span> <span class="o">[</span> 1 <span class="o">]</span>
<span class="k">do
</span><span class="nb">read </span>x
<span class="nb">echo</span> <span class="nv">$x$x</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># divisors of integer number</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="nt">-n</span> <span class="s1">'number=?'</span>
<span class="nb">read </span>x
<span class="nv">i</span><span class="o">=</span>2 <span class="c"># possible divisor</span>
<span class="nv">k</span><span class="o">=</span>1
<span class="nb">let </span><span class="nv">n</span><span class="o">=</span><span class="nv">$x</span>/2 <span class="c"># top limit for divisor</span>
<span class="k">while</span> <span class="o">[</span> <span class="nv">$i</span> <span class="nt">-le</span> <span class="nv">$n</span> <span class="o">]</span>
<span class="k">do
</span><span class="nb">let </span><span class="nv">k</span><span class="o">=</span><span class="nv">$x</span>%<span class="nv">$i</span> <span class="c"># residual</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$k</span> <span class="nt">-eq</span> 0 <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="nt">-n</span> <span class="s2">"Divisor= "</span>
<span class="nb">echo</span> <span class="nv">$i</span>
<span class="k">if
</span><span class="nb">let </span><span class="nv">i</span><span class="o">=</span><span class="nv">$i</span>+1
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># simple use of for ... in ...</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="k">for </span>i <span class="k">in</span> <span class="s2">"abc"</span> <span class="s2">"xyz"</span> 1 2 99
<span class="k">do
</span><span class="nb">echo</span> <span class="nv">$i</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># use for as in C-programming</span>
<span class="c"># sum of the first n integer numbers</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="nt">-n</span> <span class="s2">"number=?"</span>
<span class="nb">read </span>n
<span class="nv">s</span><span class="o">=</span>0 <span class="c"># here sum</span>
<span class="k">for</span><span class="o">((</span><span class="nv">i</span><span class="o">=</span>1<span class="p">;</span> i <<span class="o">=</span>n <span class="p">;</span> i++<span class="o">))</span>
<span class="k">do
</span><span class="nb">let </span><span class="nv">s</span><span class="o">=</span><span class="nv">$s</span>+<span class="nv">$i</span>
<span class="k">done
</span><span class="nb">echo</span> <span class="s2">"sum= "</span><span class="nv">$s</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># operator case for selection of logical branches</span>
<span class="c"># end marker ;; of branch</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"input string=?"</span>
<span class="nb">read </span>str
<span class="k">case</span> <span class="s2">"</span><span class="nv">$str</span><span class="s2">"</span> <span class="k">in
</span>abc<span class="p">)</span> <span class="nb">echo</span> <span class="s2">"string = abc"</span>
<span class="p">;;</span>
xyz<span class="p">)</span> <span class="nb">echo</span> <span class="s2">"string = xyz"</span>
<span class="p">;;</span>
<span class="k">*</span><span class="p">)</span> <span class="nb">echo</span> <span class="s2">"not abc, not zyz"</span> <span class="p">;;</span>
<span class="k">esac</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># exit operator</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="k">while</span> <span class="o">[</span> 1 <span class="o">]</span>
<span class="k">do
</span><span class="nb">read </span>x
<span class="nb">echo</span> <span class="nv">$x</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$x</span> <span class="nt">-eq</span> 0 <span class="o">]</span> <span class="c"># in $x must be number!</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"script done ..."</span>
<span class="nb">exit </span>0
<span class="k">fi
done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># string comparing</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Input string=?"</span>
<span class="nb">read </span>str
<span class="k">if</span> <span class="o">[</span> <span class="nv">$str</span> <span class="o">=</span> <span class="s2">"abc"</span> <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"You got it!"</span>
<span class="k">else
</span><span class="nb">echo</span> <span class="s2">"Its not 'abc'"</span>
<span class="k">fi</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># simple strings concatenation</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Input string=?"</span>
<span class="nb">read </span>str
<span class="nv">s2</span><span class="o">=</span><span class="nv">$str</span><span class="s2">"AAAA"</span>
<span class="nb">echo</span> <span class="nv">$s2</span>
<span class="nv">s3</span><span class="o">=</span><span class="s2">"XXX"</span><span class="nv">$s2</span>
<span class="nb">echo</span> <span class="nv">$s3</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># strings concatenation</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Input string=?"</span>
<span class="nb">read </span>str1
<span class="nb">echo</span> <span class="s2">"Input second string=?"</span>
<span class="nb">read </span>str2
<span class="nv">s3</span><span class="o">=</span><span class="nv">$str1$str2</span> <span class="c"># it works!</span>
<span class="nb">echo</span> <span class="nv">$s3</span>
<span class="nv">s4</span><span class="o">=</span><span class="k">${</span><span class="nv">str1</span><span class="k">}${</span><span class="nv">str2</span><span class="k">}</span> <span class="c"># it works too!</span>
<span class="nb">echo</span> <span class="nv">$s4</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># testing whether a string is null</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Input string=?"</span>
<span class="nb">read </span>str
<span class="k">if</span> <span class="o">[</span> <span class="nv">$str</span> <span class="o">]</span>
<span class="k">then
</span><span class="nb">echo</span> <span class="s2">"Not empty"</span>
<span class="k">else
</span><span class="nb">echo</span> <span class="s2">"Empty"</span>
<span class="k">fi</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># length of string</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Input string=?"</span>
<span class="nb">read </span>str
<span class="nv">leng</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr </span>length <span class="nv">$str</span><span class="sb">`</span>
<span class="nb">echo</span> <span class="s2">"length= "</span><span class="nv">$leng</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># how to insert string to constant string</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">var</span><span class="o">=</span><span class="s2">"good"</span>
<span class="nb">echo</span> <span class="s2">"This is </span><span class="nv">$var</span><span class="s2"> test"</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># simplest function example</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c">#---------------------------</span>
func<span class="o">()</span>
<span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Inside function"</span>
<span class="o">}</span>
<span class="c">#---------------------------</span>
<span class="nb">echo</span> <span class="s2">"Now function call..."</span>
func
<span class="nb">echo</span> <span class="s2">"end of main"</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># function can see variables of main program</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c">#--------------------------</span>
func<span class="o">()</span>
<span class="o">{</span>
<span class="nb">echo</span> <span class="nv">$var</span>
<span class="o">}</span>
<span class="c">#--------------------------</span>
<span class="nv">var</span><span class="o">=</span><span class="s2">"test of global "</span>
func</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># pass of parameters to function</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c">#---------------------------------</span>
func<span class="o">()</span>
<span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"We are in function now"</span>
<span class="nb">echo</span> <span class="nv">$0</span> <span class="c"># shell script name</span>
<span class="nb">echo</span> <span class="nv">$1</span> <span class="c"># first parameter</span>
<span class="nb">echo</span> <span class="nv">$2</span> <span class="c"># second parameter</span>
<span class="nb">echo</span> <span class="s2">"We leave function..."</span>
<span class="nb">exit </span>0
<span class="o">}</span>
<span class="c">#---------------------------------</span>
func 123 <span class="s2">"abc"</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># passing variable parameters</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="c">#-------------------------------</span>
func2<span class="o">()</span>
<span class="o">{</span>
<span class="nb">let </span><span class="nv">r</span><span class="o">=</span><span class="nv">$1</span><span class="k">*</span><span class="nv">$1</span>
<span class="nb">echo</span> <span class="nv">$r</span>
<span class="o">}</span>
<span class="c">#-------------------------------</span>
<span class="nv">var</span><span class="o">=</span>123
func2 <span class="nv">$var</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># recursive function example</span>
<span class="c"># calculation of factorial</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c">#-------------------------------</span>
factorial<span class="o">()</span>
<span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="nt">-gt</span> <span class="s2">"1"</span> <span class="o">]</span>
<span class="k">then
</span><span class="nv">i</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$1</span> - 1<span class="sb">`</span>
<span class="nv">j</span><span class="o">=</span><span class="sb">`</span>factorial <span class="nv">$i</span><span class="sb">`</span>
<span class="nv">k</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr</span> <span class="nv">$1</span> <span class="se">\*</span> <span class="nv">$j</span><span class="sb">`</span>
<span class="nb">echo</span> <span class="nv">$k</span>
<span class="k">else
</span><span class="nb">echo </span>1
<span class="k">fi</span>
<span class="o">}</span>
<span class="c">#-------------------------------</span>
<span class="nb">read </span>x
factorial <span class="nv">$x</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># using of function library ????????</span>
<span class="c">#---------------------------------------------------</span>
file with name my.lb
func2<span class="o">()</span>
<span class="o">{</span>
<span class="nb">echo</span> <span class="nv">$1$1</span>
<span class="o">}</span>
func3<span class="o">()</span>
<span class="o">{</span>
<span class="nb">echo</span> <span class="nv">$1$1$1</span>
<span class="o">}</span>
shell program:
<span class="c">#!/bin/sh</span>
./my.lb
<span class="nv">var</span><span class="o">=</span>123
func2 123
func3 123</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># floating point numbers</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="c"># does not support !!!!</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># simpiest array : declaration, element access and assignment</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd</span><span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[0]</span><span class="k">}</span> <span class="c"># curly bracket notation</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[1]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[2]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[3]</span><span class="k">}</span>
arr[2]<span class="o">=</span><span class="s2">"CCCCCCC"</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[2]</span><span class="k">}</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># number of elements in array</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd</span><span class="o">)</span>
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="nv">$n</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># array with filenames of current directory</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">arr</span><span class="o">=(</span><span class="k">*</span><span class="o">)</span> <span class="c"># * is list of all file and dir names</span>
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of files and dirs "</span><span class="nv">$n</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[0]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[1]</span><span class="k">}</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># print all array elements -not good</span>
<span class="c"># works then no holes in indexes</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd </span>ee ff gg<span class="o">)</span>
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nv">i</span><span class="o">=</span>0
<span class="k">while </span><span class="nb">test</span> <span class="nv">$i</span> <span class="nt">-lt</span> <span class="nv">$n</span>
<span class="k">do
</span><span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[</span><span class="nv">$i</span><span class="p">]</span><span class="k">}</span>
<span class="nb">let </span><span class="nv">i</span><span class="o">=</span><span class="nv">$i</span>+1
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># dynamic expansion of array</span>
<span class="c"># one array element in reality is couple (index, value)</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=()</span>
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of array elements "</span><span class="nv">$n</span>
arr[0]<span class="o">=</span>a
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of array elements "</span><span class="nv">$n</span>
arr[1]<span class="o">=</span>b
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of array elements "</span><span class="nv">$n</span>
arr[2]<span class="o">=</span>c
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of array elements "</span><span class="nv">$n</span>
arr[10]<span class="o">=</span>h
<span class="nv">n</span><span class="o">=</span><span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="s2">"number of array elements "</span><span class="nv">$n</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[10]</span><span class="k">}</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[4]</span><span class="k">}</span> <span class="c"># empty string</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[6]</span><span class="k">}</span> <span class="c"># empty string</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># get all array and print it</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd </span>ee ff gg<span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span> <span class="c"># all array</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span>:0<span class="k">}</span> <span class="c"># aa bb cc dd ee ff gg</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span>:1<span class="k">}</span> <span class="c"># bb cc dd ee ff gg</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span>:2:3<span class="k">}</span> <span class="c"># cc dd ee</span>
<span class="k">for </span>i <span class="k">in</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span>
<span class="k">do
</span><span class="nb">echo</span> <span class="nv">$i</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># adding element to array</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd </span>ee ff gg<span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span>
<span class="nv">arr</span><span class="o">=(</span> <span class="s2">"</span><span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span><span class="s2">"</span> <span class="s2">"newElem"</span> <span class="o">)</span> <span class="c"># from right</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span>
<span class="nv">arr</span><span class="o">=(</span> <span class="s2">"newElem"</span> <span class="s2">"</span><span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span><span class="s2">"</span> <span class="o">)</span> <span class="c"># from left</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># move last element from array</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd </span>ee ff gg<span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span>
<span class="nb">unset </span>arr[<span class="k">${#</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span><span class="nt">-1</span><span class="o">]</span> <span class="c"># move last element</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># copying of array</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nv">arr</span><span class="o">=(</span>aa bb cc <span class="nb">dd </span>ee ff gg<span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr</span><span class="p">[*]</span><span class="k">}</span>
<span class="nv">arr2</span><span class="o">=(</span> <span class="s2">"</span><span class="k">${</span><span class="nv">arr</span><span class="p">[@]</span><span class="k">}</span><span class="s2">"</span> <span class="o">)</span>
<span class="nb">echo</span> <span class="k">${</span><span class="nv">arr2</span><span class="p">[*]</span><span class="k">}</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># get substring from string</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">"long string input=?"</span>
<span class="nb">read </span>st
<span class="nv">st2</span><span class="o">=</span><span class="k">${</span><span class="nv">st</span>:2:4<span class="k">}</span>
<span class="nb">echo</span> <span class="nv">$st2</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># substring replacement "abc" to "xyz"</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/bash</span>
<span class="nb">echo</span> <span class="s2">"string input=?"</span>
<span class="nb">read </span>str
<span class="nv">st2</span><span class="o">=</span><span class="k">${</span><span class="nv">str</span><span class="p">/abc/xyz</span><span class="k">}</span> <span class="c"># only ones</span>
<span class="nb">echo</span> <span class="nv">$st2</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># search of character 'a' in a string</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"string input=?"</span>
<span class="nb">read </span>str
<span class="nv">pos</span><span class="o">=</span><span class="sb">`</span><span class="nb">expr </span>index <span class="nv">$str</span> a<span class="sb">`</span>
<span class="nb">echo</span> <span class="s2">"position of the first 'a' = "</span><span class="nv">$pos</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># string list counting</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="k">for </span>i <span class="k">in </span>aa bb cc <span class="nb">dd </span>ee ff gg hh
<span class="k">do
</span><span class="nb">echo</span> <span class="nv">$i</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># command line arguments</span>
<span class="c"># separated by spaces</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="nv">$0</span> <span class="c"># script file name</span>
<span class="nb">echo</span> <span class="nv">$1</span> <span class="c"># first argument</span>
<span class="nb">echo</span> <span class="nv">$2</span> <span class="c"># second argument</span>
<span class="nb">echo</span> <span class="nv">$3</span> <span class="c"># third argument</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># command line arguments without script name number</span>
<span class="c"># all command line without script name</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="nv">$# </span> <span class="c"># argument number</span>
<span class="nb">echo</span> <span class="nv">$*</span> <span class="c"># command line</span>
<span class="nb">echo</span> <span class="nv">$@</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># get all files and dir names</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="k">*</span> <span class="c"># file and dir names of current dir</span>
<span class="k">for </span>i <span class="k">in</span> <span class="k">*</span>
<span class="k">do
</span><span class="nb">echo</span> <span class="nv">$i</span>
<span class="k">done
</span><span class="nb">echo</span> ../<span class="k">*</span> <span class="c"># file and dir names of parent dir</span>
<span class="k">*</span>/ just close comments</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># file search from root dir ???????</span>
<span class="c"># file name - parameter from command line</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">start</span><span class="o">=</span><span class="nv">$HOME</span>
<span class="nb">date
</span>find <span class="nv">$start</span> <span class="nt">-name</span> <span class="nv">$1</span> <span class="nt">-print</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># list of all files with extension .txt !!!!!!</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="k">*</span>.txt</pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># combine a set of text files in one file use</span>
<span class="c"># script >targetfile.lst , not txt-file !!!</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">lst</span><span class="o">=</span><span class="k">*</span>.txt
<span class="k">for </span>i <span class="k">in</span> <span class="nv">$lst</span>
<span class="k">do
</span><span class="nb">echo
echo</span> <span class="s2">"======================================"</span>
<span class="nb">echo</span> <span class="s2">"File "</span><span class="nv">$i</span>
<span class="nb">echo</span> <span class="s2">"======================================"</span>
<span class="nb">cat</span> <<span class="nv">$i</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># create new file and write string to it</span>
<span class="c"># file name from command string - variable $1</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"String=?"</span>
<span class="nb">read </span>str
<span class="nb">echo</span> <span class="nv">$str</span> <span class="o">></span><span class="nv">$1</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># read textlines from console and add them to file</span>
<span class="c"># file name from command string - variable $1</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">echo</span> <span class="s2">"Add strings=?"</span>
<span class="nv">str</span><span class="o">=</span><span class="s2">"1"</span>
<span class="k">while</span> <span class="o">[</span> <span class="nv">$str</span> <span class="o">]</span>
<span class="k">do
</span><span class="nb">read </span>str
<span class="nb">echo</span> <span class="nv">$str</span> <span class="o">>></span><span class="nv">$1</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># read first string from text file</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nb">read </span>str <<span class="nv">$1</span>
<span class="nb">echo</span> <span class="nv">$str</span></pre></td></tr></tbody></table></code></pre></figure>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre><span class="c">#---------------------------------------------------</span>
<span class="c"># text file reading</span>
<span class="c"># script res.txt</span>
<span class="c">#---------------------------------------------------</span>
<span class="c">#!/bin/sh</span>
<span class="nv">str</span><span class="o">=</span><span class="s2">"1"</span>
<span class="k">while</span> <span class="o">[</span> <span class="nv">$str</span> <span class="o">]</span>
<span class="k">do
</span><span class="nb">read </span>str
<span class="nb">echo</span> <span class="nv">$str</span>
<span class="nb">echo</span> <span class="nv">$str</span>
<span class="k">done</span></pre></td></tr></tbody></table></code></pre></figure>
Tags in Jekyll by Charlie Park2015-02-27T23:14:34+00:002015-02-27T23:14:34+00:00http://rrevanth.github.io/reads/2015/02/tagsinjekyllcharlieparker/<p><a class="embedly-card" href="http://charliepark.org/tags-in-jekyll/">Tags In Jekyll <i class="fa fa-external-link"></i></a>
<!--more--></p>