shell练习题

第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

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值