shell脚本编程基础(1)

一.位置变量相关知识

    1.位置变量定义:在脚本代码中调用通过命令行传递给脚本的的参数

    2.位置变量种类:   

            $1 $2 … :对应第一、第二…参数 shift [n]换位置

            $@:传递给脚本的所有参数,每个参数为独立字符串

            $#:传递给脚本的参数的个数

            $*:传递给脚本的所有参数,全部参数合为一个字符串

            $0:命令本身

    注意:$#和$@只有加上“”才会有区别

实例:写脚本argdesc.sh先说明各个变量的作用,脚本内容如下

1.png

实验结果如下

2.png

3.$@和$*的区别

    $@:代表所有参数,每个参数作为独立字符串

    $*:代表所有字符串,把他们作为一个整体

    (1)新建脚本文件1.sh,让其调用2.sh,内容如下

3.png

(2)新建脚本文件2.sh,分别调用“$@”、“$*”,内容如下

4.png

(3)给予执行权限运行,此时把1.sh的参数作为整体

5.png

4.$#的说明

(1)$#指的是脚本调用多少参数

(2)在上边使用过的2.sh中修改,内容如下

6.png

(3)执行2.sh,结果如下

7.png

总结:不论里边是否调用外边参数,$#表示的是外边的参数个数总和

二.作业

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。

脚本内容如下:

1.png

执行结果如下

1.1.png

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

文本内容如下:

2.png

运行结果如下:

2.1.png

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

脚本内容如下:

3.png

运行结果如下:

3.1.png

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

脚本内容如下:

4.png

执行结果:

4.1.png

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

脚本内容如下:

5.png

结果如下:

5.1.png

6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

脚本内容如下:

6.png

结果如下:

6.1.png

7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

脚本内容如下:

7.png

结果如下:

7.1.png

8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

脚本内容如下:

8.png

结果如下:

8.1.png

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

脚本内容如下:

9.png

结果如下:

9.1.png

10、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写

脚本内容如下:

10.png

结果如下:

10.1.png

11、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。

脚本内容如下:

5.png

结果如下:

6.png

12、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

脚本内容如下:

2.png

结果如下:

2.1.png

13、计算1+2+3+…+100的值

脚本内容如下:

3.png

结果如下:

3.1.png

14、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之

脚本内容如下:

3.png

结果如下:

32.png

原创文章,作者:mengzhiqian,如若转载,请注明出处:http://www.178linux.com/34786

(0)
mengzhiqianmengzhiqian
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相关推荐

  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05
  • 学习Linux的第一周 之screen

         1.来到马哥的感想:      已经接触Linux已经一周,在紧张的而又条理的学习当中,我学到了很多东西单说量我就很佩服自己,在大学的两年当中已经快把自己学习新知识的渴望忘记了!来到马哥这短短一周我感觉我真的长大了很多,我把手机王者荣耀卸载了。只想对自己说加油坚持下去。…

    Linux干货 2017-07-16
  • 马哥网络教育班21期-第一周课程练习

      一、计算机的组成及其功能 1.1计算机的组成      1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分,分别为运算器、控制器、存储器、输入设备和输出设备。 1.2计算机的组成 控制器(Contro…

    Linux干货 2016-07-12
  • 第六周

    请详细总结vim编辑器的使用并完成以下练习题 基本模式: 编辑模式,命令模式 输入模式 末行模式 内置的命令行接口 打开文件: # vim [options] [file ..] +#:打开文档后,直接让光标处于第#行的行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首   模式转换: 编辑模式:默认模式 编…

    Linux干货 2017-05-13
  • nginx rewrite实战

    nginx rewrite实战 nginx rewrite实战 nginx rewrite实战 nginx rewrite 正则表达式匹配 多目录转成参数 目录对换 目录自动加“/” ,这个功能一般浏览器自动完成 禁止htaccess 禁止多个目录 禁止以/data开头的文件,可以禁止/data/下多级目录下.log.txt等请求 禁止单个文件 给favic…

    Linux干货 2016-11-17
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]#cp /etc/rc.d/rc.sysinit /tmp/ [root@localhost&nbs…

    Linux干货 2016-07-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-16 16:26

    对位置变量总结的详细,作业完成的也很认真,但是对各个变量之间的差别,更应用场景需要有一个完整的总结哦,