第1章 填空题
1.1 写出以下位置参数的作用
$0 当前程序的名称
$n $1表示第一个参数,$2表示第二个参数,以此类推
$# 命令行参数的个数
$* 以"参数1 参数2···"形式保存所有参数(看作一个整体输出)
$@ 以"参数1""参数2···"形式保存所有参数(逐行输出)
1.2写出以下特殊变量的作用
$? 前一个命令或函数的返回码
$$ 本程序的(进程ID号)PID
$! 上一个命令的PID
$_ 获取命令行最后一个参数,相当于ESC.
0为成功/正确
非0为失败/错误
1.3写出以下字母比较符的作用
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
1.4写出以下特殊变量扩展的意义
${abin}
${#abin} --变量的长度
${url#*.} --从前往后匹配删除
${url##*.} --##贪婪匹配,从前往后匹配删除
${url%.*} --从后往前匹配删除
${url%%.*} --%%贪婪匹配,从后往前匹配删除
[root@abin ~]# abin=www.abins.cn
[root@abin ~]# echo ${abin}
www.abins.cn
[root@abin ~]# echo ${#abin}
12
[root@abin ~]# echo ${abin#*.}
abins.cn
[root@abin ~]# echo ${abin##*.}
cn
[root@abin ~]# echo ${abin%.*}
www.abins
[root@abin ~]# echo ${abin%%.*}
www
第2章
2.1写出3个以上用于计算的命令
[root@abin ~]# echo $((1+1)) 整数
2
[root@abin ~]# expr 1 + 1 整数
2
[root@abin ~]# echo $[1+1] 整数
2
[root@abin ~]# echo 1+1.5|bc 小数
2.5
[root@abin ~]# awk 'BEGIN{print 1+1}' 整数
2
第3章 编程
3.1输入两个整数计算这两个整数的相加,相减,相乘,相除,求余的结果
[root@abin /server]# cat 1.sh
#!/bin/sh
##create abin 2020-6-24
read -p "please input first num:" num1
expr 1 + $num1 >/dev/null 2>&1
[ $? -ne 0 ] && echo "please input zhengshu" && exit 1
read -p "please input second num:" num2
expr 1 + $num1 >/dev/null 2>&1
[ $? -ne 0 ] && echo "please input zhengshu" && exit 2
echo "$num1+$num2=$[$num1+$num2]"
echo "$num1-$num2=$[$num1-$num2]"
echo "$num1*$num2=$[$num1*$num2]"
echo "$num1/$num2=$[$num1/$num2]"
echo "$num1%$num2=$[$num1%$num2]"
3.2把一个文本文档的前五行中包含字母的行删除掉,同时把6到10行中的全部字母删除掉
[root@abin /server]# cat 2.sh
#!/bin/sh
##create abin 2020-6-24
sed -n '1,5p' test.txt|sed '/[a-Z]/d' >123.txt
for i in `seq 6 10`
do
l=`sed -n ${i}p test.txt`
echo $l|sed "s#[a-Z]##g" >>123.txt
done
rm -f test.txt
mv 123.txt test.txt
3.3打印下面这句话中字母数小于5的单词I am abins teacher I am 18
[root@abin /server]# cat 3.sh
#!/bin/sh
##create abin 2020-6-24
for i in I am abins teacher I am 18
do
if [ ${#i} -lt 5 ]
then
echo $i
fi
done
3.4写个shell,看看你的linux系统中是否有自定义用户(普通用户),若是有,一共有几个?
[root@abin /server]# cat 4.sh
#!/bin/sh
##create abin 2020-6-24
N=`awk -F":" '{if ($3>=1000&&$3<=60000)print $0}' /etc/passwd|wc -l`
if [ $N -ne 0 ]
then
echo "yes user:$N"
fi
3.5写一个shell脚本来看看你使用最多的命令是哪些,列出你最常用的命令top10
[root@abin /server]# sort /root/.bash_history |uniq -c|sort -nr|head
56 ll
14 sh startnginx.sh stop
12 cd
11 sh startnginx.sh status
11 echo $?
10 sh startnginx.sh start
10 cd /server/scripts/
10 cat test.txt
9 systemctl restart nginx
8 vim case-anli2.sh
3.6编写一个脚本,计算100以内所有能被3整除数字的和
方法1:
[root@abin /server]# cat 6.sh
#!/bin/sh
##create abin 2020-6-24
for i in `seq 3 3 100`
do
sum=$[$sum+$i]
done
echo $sum
方法2:
[root@abin /server]# cat 6.sh
#!/bin/sh
##create abin 2020-6-24
sum=0
for i in `seq 1 100`
do
if [ `expr $i % 3` -eq 0 ]
then
sum=$[$sum+$i]
fi
done
echo $sum