练习
1)写一个脚本,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和
2)写一个脚本,计算/etc/rc.d/rc.sysinit及/etc/rc.d/init.d/functions文件中所有空白行之和
3)写一个脚本,传递两个文件路径作为参数给脚本,计算两个文件中所有空白行之和
4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?
1)写一个脚本,计算/etc/passwd文件中的第10个用户和第20个用户的ID之和
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@izpo45bh60h6bsz scripts]
# nano adduserid.sh
#!/bin/bash
sum
=
#变量不能以数字开头
#命令引用实现赋值
uid10=`
head
-n 10
/etc/passwd
|
tail
-n 1 |
cut
-d
':'
-f3`
uid20=$(
head
-n 20
/etc/passwd
|
tail
-n 1 |
cut
-d
':'
-f3)
#算术运算表达式
let
sum
=$uid10+$uid20
echo
"let expression: $sum"
sum
=$[$uid10+$uid20]
echo
" 变量引用实现赋值\$[算术表达式]:$sum"
sum
=$(($uid10+$uid20))
echo
"变量引用实现赋值\$((算术表达式)): $sum"
sum
=$(
expr
$uid10 + $uid20)
echo
"命令引用实现赋值\$(命令): $sum"
|
运算结果:
|
1
2
3
4
5
|
# bash adduserid.sh
let
expression: 100
变量引用实现赋值$[算术表达式]:100
变量引用实现赋值$((算术表达式)): 100
命令引用实现赋值$(命令): 100
|
2)写一个脚本,计算/etc/rc.d/rc.sysinit及/etc/rc.d/init.d/functions文件中所有空白行之和
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@izpo45bh60h6bsz scripts]
# nano addblank.sh
#!/bin/bash
blank1=
blank2=
sum
=
name1=
/etc/rc
.d
/rc
.sysinit
name2=
/etc/rc
.d
/init
.d
/functions
##命令引用实现赋值
blank1=`
grep
-c
'^[[:space:]]*$'
$name1`
blank2=$(
grep
-c
'^[[:space:]]*$'
$name2)
#算术运算表达式
let
sum
=$blank1+$blank2
echo
"let expression: $sum"
sum
=$[$blank1+$blank2]
echo
" 变量引用实现赋值\$[算术表达式]:$sum"
sum
=$(($blank1+$blank2))
echo
"变量引用实现赋值\$((算术表达式)): $sum"
sum
=$(
expr
$blank1 + $blank2)
echo
"命令引用实现赋值\$(命令): $sum"
|
运行结果 :
|
1
2
3
4
5
|
[root@izpo45bh60h6bsz scripts]
# bash addblank.sh
let
expression: 188
变量引用实现赋值$[算术表达式]:188
变量引用实现赋值$((算术表达式)): 188
命令引用实现赋值$(命令): 188
|
3)写一个脚本,传递两个文件路径作为参数给脚本,计算两个文件中所有空白行之和
cat 连接文本文件,显示到标准输出
|
1
2
3
4
|
root@izpo45bh60h6bsz scripts]
# cat addblank3.sh
#!/bin/bash
blanks=$(
cat
$1 $2 |
grep
-c
'^[[:space:]]*$'
)
echo
"$1 and $2 has $blanks blanklines"
|
运算结果:
|
1
2
|
[root@izpo45bh60h6bsz scripts]
# bash addblank3.sh /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions
/etc/rc
.d
/rc
.sysinit and
/etc/rc
.d
/init
.d
/functions
has 188 blanklines
|
4)统计 /etc,/var,/usr目录中共有多少个一级子目录和文件?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@izpo45bh60h6bsz scripts]
# nano count.sh
#!/bin/bash
sum
=
#命令引用实现赋值
count1=$(
ls
$1 |
wc
-l)
#let 算术运算表达式
let
sum
=$
sum
+$count1
#换港符,shift默认将传递给脚本的参数,踢一个
shift
#命令引用实现赋值
count1=`
ls
$1 |
wc
-l`
#变量引用实现赋值
sum
=$[$
sum
+$count1]
shift
count1=$(
ls
$1 |
wc
-l)
#命令引用实现赋值
sum
=$(
expr
$
sum
+ $count1)
echo
"The sum of filecounts: $sum"
|
执行的结果
|
1
2
3
4
5
6
7
8
|
[root@izpo45bh60h6bsz scripts]
# bash count.sh /etc /var /usr
The
sum
of filecounts: 287
[root@izpo45bh60h6bsz scripts]
# ls /etc | wc -l
249
[root@izpo45bh60h6bsz scripts]
# ls /var | wc -l
26
[root@izpo45bh60h6bsz scripts]
# ls /usr | wc -l
12
|
本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1952923,如需转载请自行联系原作者