天天看点

脚本和算术运算的小练习

练习

1)写一个脚本,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和

2)写一个脚本,计算/etc/rc.d/rc.sysinit及/etc/rc.d/init.d/functions文件中所有空白行之和

3)写一个脚本,传递两个文件路径作为参数给脚本,计算两个文件中所有空白行之和

4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<code>[root@izpo45bh60h6bsz scripts]</code><code># nano adduserid.sh</code>

<code>#!/bin/bash</code>

<code>sum</code><code>=</code>

<code>#变量不能以数字开头</code>

<code>#命令引用实现赋值</code>

<code>uid10=`</code><code>head</code> <code>-n 10 </code><code>/etc/passwd</code> <code>| </code><code>tail</code> <code>-n 1 | </code><code>cut</code> <code>-d</code><code>':'</code> <code>-f3`</code>

<code>uid20=$(</code><code>head</code> <code>-n 20 </code><code>/etc/passwd</code> <code>| </code><code>tail</code> <code>-n 1 | </code><code>cut</code> <code>-d</code><code>':'</code> <code>-f3)</code>

<code>#算术运算表达式</code>

<code>let</code> <code>sum</code><code>=$uid10+$uid20</code>

<code>echo</code> <code>"let expression: $sum"</code>

<code>sum</code><code>=$[$uid10+$uid20]</code>

<code>echo</code> <code>" 变量引用实现赋值\$[算术表达式]:$sum"</code>

<code>sum</code><code>=$(($uid10+$uid20))</code>

<code>echo</code> <code>"变量引用实现赋值\$((算术表达式)): $sum"</code>

<code>sum</code><code>=$(</code><code>expr</code> <code>$uid10 + $uid20)</code>

<code>echo</code> <code>"命令引用实现赋值\$(命令): $sum"</code>

运算结果:

<code># bash adduserid.sh</code>

<code>let</code> <code>expression: 100</code>

<code>变量引用实现赋值$[算术表达式]:100</code>

<code>变量引用实现赋值$((算术表达式)): 100</code>

<code>命令引用实现赋值$(命令): 100</code>

20

21

<code>[root@izpo45bh60h6bsz scripts]</code><code># nano addblank.sh</code>

<code>blank1=</code>

<code>blank2=</code>

<code>name1=</code><code>/etc/rc</code><code>.d</code><code>/rc</code><code>.sysinit</code>

<code>name2=</code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code>##命令引用实现赋值</code>

<code>blank1=`</code><code>grep</code> <code>-c </code><code>'^[[:space:]]*$'</code> <code>$name1`</code>

<code>blank2=$(</code><code>grep</code> <code>-c </code><code>'^[[:space:]]*$'</code> <code>$name2)</code>

<code>let</code> <code>sum</code><code>=$blank1+$blank2</code>

<code>sum</code><code>=$[$blank1+$blank2]</code>

<code>sum</code><code>=$(($blank1+$blank2))</code>

<code>sum</code><code>=$(</code><code>expr</code> <code>$blank1 + $blank2)</code>

运行结果 :

<code>[root@izpo45bh60h6bsz scripts]</code><code># bash addblank.sh</code>

<code>let</code> <code>expression: 188</code>

<code>变量引用实现赋值$[算术表达式]:188</code>

<code>变量引用实现赋值$((算术表达式)): 188</code>

<code>命令引用实现赋值$(命令): 188</code>

cat 连接文本文件,显示到标准输出

<code>root@izpo45bh60h6bsz scripts]</code><code># cat addblank3.sh </code>

<code>blanks=$(</code><code>cat</code> <code>$1 $2 | </code><code>grep</code> <code>-c </code><code>'^[[:space:]]*$'</code><code>)</code>

<code>echo</code> <code>"$1 and $2 has $blanks blanklines"</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># bash addblank3.sh /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions </code>

<code>/etc/rc</code><code>.d</code><code>/rc</code><code>.sysinit and </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code> <code>has 188 blanklines</code>

4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?

<code>[root@izpo45bh60h6bsz scripts]</code><code># nano count.sh </code>

<code>count1=$(</code><code>ls</code> <code>$1 | </code><code>wc</code> <code>-l)</code>

<code>#let 算术运算表达式</code>

<code>let</code> <code>sum</code><code>=$</code><code>sum</code><code>+$count1</code>

<code>#换港符,shift默认将传递给脚本的参数,踢一个</code>

<code>shift</code>

<code>count1=`</code><code>ls</code> <code>$1 | </code><code>wc</code> <code>-l`</code>

<code>#变量引用实现赋值</code>

<code>sum</code><code>=$[$</code><code>sum</code><code>+$count1]</code>

<code>sum</code><code>=$(</code><code>expr</code> <code>$</code><code>sum</code> <code>+ $count1)</code>

<code>echo</code> <code>"The sum of filecounts: $sum"</code>

执行的结果 

<code>[root@izpo45bh60h6bsz scripts]</code><code># bash count.sh /etc /var /usr</code>

<code>The </code><code>sum</code> <code>of filecounts: 287</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># ls /etc | wc -l</code>

<code>249</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># ls /var | wc -l</code>

<code>26</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># ls /usr | wc -l</code>

<code>12</code>

<code></code>

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1952923,如需转载请自行联系原作者