1. shell脚本中,怎么做可以把某一行给注释掉?
1
|
在该行的最前面加一个警号
#
|
2. 如何执行一个shell脚本呢?
1
|
bash
1.sh 或者
chmod
+x 1.sh; .
/1
.sh
|
3. 为了方便管理,我们约定把shell脚本都放到哪个目录下?
1
|
放到
/usr/local/sbin/
下
|
4. 为了更好的调试shell脚本,我们可以加一个选项来观察shell脚本的执行过程,是哪个选项呢?
1
|
bash
-x 1.sh
|
5. 使用date命令打印5天前的日期,要求日期格式为: xxxx-xx-xx
1
2
|
date
-d
"5 days ago"
+%Y-%m-%d
或者
date
-d
"-5 day"
+%F
|
6. 请判断,阿铭的脚本哪里有问题?
1
2
3
4
5
|
#! /bin/bash
a = 1
b = 2
echo
$a, $b
|
赋值变量值的时候,带了空格
7. shell脚本中如何使用数学运算?请举例说明。
1
2
3
|
a=1; b=2
c=$[$a+$b]
echo
$c
|
8. shell脚本中有一个命令可以实现脚本和用户交互,请问是哪个命令,怎么使用?
1
2
3
4
|
read
-p
例如
read
-p
"Please input a number"
n
这样会把用户输入的内容作为n这个变量的值
|
9. 在shell中如何进行大小或者等于判断?
1
2
|
大于 -gt 小于是 -lt 等于是 -
ne
大于等于是 -
ge
小于等于是 -
le
格式如下:
if
[ $a -
ge
0 ];
then
... ;
fi
|
10. shell脚本中,用什么符号表示并且,用什么符号表示或者?
1
2
|
&& 并且
|| 或者
|
11. shell脚本中,case逻辑判断的结构是什么样的?
1
2
3
4
5
6
7
8
9
10
11
|
case
$a
in
1)
command
;;
2)
command
;;
*)
command
;;
esac
|
12. 列举出shell脚本中常用的循环结构。
1
2
|
for
a
in
... ;
do
... ;
done
while
...;
do
...;
done
|
13. shell脚本中函数的作用是什么?函数结构是什么样的?
函数可以理解成shell脚本中一个小代码单元,当要用到这段代码时直接调用函数名即可,从而避免重复书写这段代码,提高代码书写效率和质量。
函数的结构为
1
2
3
|
function
fu_name() {
.....
}
|
14. 写脚本实现,把一个目录下的所有文件(不含有目录)全部在文件名后面加一个.bak
1
2
3
|
#! /bin/bash
for
f
in
`
find
. -
type
f`;
do
mv
$f $f.bak;
done
|
或
1
2
3
4
5
6
7
8
|
#! /bin/bash
for
i
in
`
ls
`;
do
if
[ -f $i ];
then
mv
$i $i.bak
fi
done
|
15. 编写一个shell脚本,将当前目录下大小大于100K的文件全部移动到/tmp/ 目录下。
1
|
for
f
in
`
find
. -
type
f -size +100K`;
do
mv
$f
/tmp/
;
done
|
16. 写一个小脚本,获取本机的HOSTNAME、IP地址以及DNS地址。
标准答案版:
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash
hostname
=`
hostname
`
echo
"hostname : "
$
hostname
ip=`
/sbin/ifconfig
-a |
grep
'inet addr'
|
awk
-F
':'
'{print $2}'
|
awk
'{print $1}'
`
for
i
in
$ip
do
echo
"`ifconfig | grep -B1 "
$i
" | grep -v 'inet addr' | awk '{print $1}'` "
$i
""
done
DNS=`
cat
/etc/resolv
.conf |
grep
nameserver|
grep
-
v
'#'
`
echo
$DNS
|
个人版本:
1
2
3
4
5
6
7
8
9
10
|
#! /bin/bash
hostname
=`
echo
$HOSTNAME`
IP=`
ifconfig
eth0 |
sed
-n
'2'
p |
awk
'{print $2}'
|
awk
-F
':'
'{print $2}'
`
dns=`
cat
/etc/resolv
.conf |
grep
'nameserver'
|
awk
'{print $2}'
|
sed
-n
'1'
p`
echo
"hostname=$hostname"
echo
"IP=$IP"
echo
"dns=$dns"
|
17. 写两个小脚本验证break和continue在循环中的作用。
shell脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#! /bin/bash
echo
"===Test 'break'==="
for
i
in
`
seq
1 5`;
do
if
[ $i -
eq
3 ];
then
break
else
echo
$i
fi
done
echo
"===Test 'continue'==="
for
i
in
`
seq
1 5`;
do
if
[ $i -
eq
3 ];
then
continue
else
echo
$i
fi
done
|
执行结果:
1
2
3
4
5
6
7
8
|
===Test
'break'
===
1
2
===Test
'continue'
===
1
2
4
5
|
本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1894348,如需转载请自行联系原作者