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
下一篇 2016-08-15

相关推荐

  • Linux中的man命令使用方法

      Linux中的man命令就是manual的缩写,此命令是用来查看系统中自带的各种参考手册,帮助用户更好的了解并使用命令。   man命令的使用格式为: man COMMAND,即man后面跟上需要查询的命令,进到手册后有如下快捷按钮帮助用户更好的操作手册。     1.按键-j &nb…

    Linux干货 2016-10-20
  • 硬链接与软链接

    引言: 链接,一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。 Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。 Inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。 Block:存放档案内容数据的地方。 &n…

    Linux干货 2016-10-20
  • Linux 第五天: (08月01日) Linux用户组管理

    Linux 第五天: (08月01日) Linux用户组管理         管理员 root,0普通用户 1-65535系统用户 1-499(centos6), 1-999(centos7)登录用户 500(centos6)+, 1000(centos7)+   /etc/passwd 用户及属性/etc/…

    Linux干货 2016-08-08
  • sed 相关概念总结

    文件查看命令:cat, tac,rev cat [OPTION]… [FILE]… -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行 [root@CentOS7 ~]# cat yyy [root@CentOS7 ~]# cat -A yyy $ tac: 把…

    Linux干货 2016-08-12
  • rsyslog配置详解,结合mysql+loganalyzer展现

        环境:Centos7.2 前言:系统日日夜夜不停地运行着,有这么一个守护进程,兢兢业业地不断记录它运行产生的日志,有不起眼的闲言碎语,值得管理员撇一眼的系统报错,也默默地接收来自进程的严厉警告,甚至在内核崩溃前夕,同样不遗余力记录着当时发生的情形。他是无言的记录者,没有特别的修辞,但他的记录的文字却掷地有声。本…

    系统运维 2016-10-25
  • 最简单的Linux系统——更加深入了解Linux启动过程

    自制一个最简单的Linux: 1、有一个新的磁盘,并创建分区 2、挂载分区,创建目录 3、拷贝内核文件 4、创建MBR和grub.conf文件 5、创建/etc/fstab文件,设置开机自动挂载 6、拷贝一个bash程序 7、卸载分区,以新磁盘重启系统

    Linux干货 2016-09-11

评论列表(1条)

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

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