bash变量之位置参数变量

    什么是变量

    变量是 bash 环境中非常重要的一个玩意儿,就是让某一个特定字串代表不固定的内容就是了,讲的更简单一点,我们可以“用一个简单的 "字眼" 来取代另一个比较复杂或者是容易变动的数据”。


    什么又是位置参数变量

    参数变量实际是属于系统预定义变量的一种,不能修改变量名,作用也是固定的,也不能新增变量。只能修改变量的值。我们来看看下面常用的位置参数变量。 

    我们知道命令可以带有选项与参数,例如 ls -la 可以察看包含隐藏文件的所有属性与权限。那么 shell script 也能在脚本文件名后面带有参数


    script 是怎么达成这个功能的呢?其实 script 针对参数已经有设置好一些变量名称了!对应如下:

1.png

    执行的脚本文件名为 $0 这个变量,第一个接的参数就是 $1 ~ 所以,只要我们在 script 里面善用 $1的话,就可以很简单的立即下达某些指令功能了!除了这些数字的变量之外, 我们还有一些较为特殊的变量可以在 script 内使用来调用这些参数

    $# :代表后接的参数“个数”,以上表为例这里显示为“ 4 ”;

    $@ :代表“ "$1" "$2" "$3" "$4" ”之意,每个变量是独立的(用双引号括起来);

    $* :代表“ "$1c$2c$3c$4" ”,其中 c 为分隔字符,默认为空白键, 所以本例中代表“ "$1 $2 $3 $4" ”之意


    $n:n代表数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号括起来,比如${11}.

    假设我要执行一个可以携带参数的 script ,执行该脚本后屏幕会显示如下的数据:

    程序的文件名为何?

    共有几个参数?

    若参数的个数小于 2 则告知使用者参数数量太少

    全部的参数内容为何?

    第一个参数为何?

    第二个参数为何

2.png

执行结果如下

3.png

示例2

4.png

执行后结果

5.png

这样我们就可以把这个脚本拿来当计算机用了,可是只能拿两个数来相加,因为我们在脚本中只定义了两个变量,其实也没必要这么麻烦;

注意:(加#号的行意思为注释,但是被注释了的行都会被忽略,除了第一行的shebang),如果需要两位数以上的加法运算,可以使用let var=算术表达式,下图依次为脚本中引用变量算法,命令行直接赋值算法

·.png

blob.png

6.png

作业

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

1.png

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

2.png

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

3.png

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

4.png

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

5.png

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

6.png

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

7.png

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

8.png

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

9.png

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

10.png

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

11.png

11.1.png

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

12.png

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

13.png

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

14.png

15。当磁盘利用率大于百分80时 发出警报

15.png

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/34735

(0)
M20-1马星M20-1马星
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相关推荐

  • iptables 入门

    iptables简单介绍    其实就是大家所熟知的基于命令行的防火墙工具,它使用规则链来允许或是阻止收发报文。当一条网络连接试图在你的系统中建立连接时,iptablels会查找其对应的匹配规则。如果找不到,iptables将对其采取默认的规则。  iptables基本的用法和常用代码 # iptables -vnL …

    Linux干货 2017-03-15
  • Linux之计划任务

    Linux 之计划任务    任务计划Linux任务计划、周期性任务执行未来的某时间点执行一次任务:atbatch:系统自行选择空闲时间去执行此处指定的任务周期性运行某任务:cron   at任务at命令:at [option] TIME常用选项:-V 显示版本信息:-l: 列出指定队列中等待运行的作业;相当于atq-d: 删除…

    Linux干货 2016-09-11
  • 排名三剑客的VIM _正确的打开姿势!

    vim程序编辑器        vi:是老式的文字处理器。     vi的使用:【vi分为3种模式一般模式、编辑模式、命令模式】         一般模式:   vi打开文件就直接进入到了一…

    Linux干货 2017-04-10
  • grep、egrep正则表达式之初窥门径

    何谓正则表达式 正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的…

    2015-03-19
  • Linux系统命令使用格式已经如何查看帮助

    在Linux 系统中有非常多的命令一般的命令格式:“COMMAND OPTIONS ARGUMENTS” 下面有一些基础命令可以体验下命令的基本格式用法 ifconfig命令    作用: 配置网络接口,查看网络接口信息    基本语法:     ifconfig  […

    Linux干货 2016-08-15
  • 文件查找命令之locate、find简析

    文件查找命令之locate、find简析    在工作中经常会在文件系统上查找符合条件的文件,今天学习了文件查找命令,在此简析locate和find两个文件查找工具。 一、杂项知识整理 1、find的选项-user的实质是通过UID查找,如果两个用户的UID相同,其会显示两个用户的所有符合条件的文件。 2、查找时-name "*…

    Linux干货 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-15 17:15

    总结的很好很详细。再接再励