linux的位置参数变量,bash变量之位置参数变量

什么是变量

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

什么又是位置参数变量

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

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

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

3c8ce6380daa33c267ccb0e2e66a02de.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 则告知使用者参数数量太少

全部的参数内容为何?

第一个参数为何?

第二个参数为何

3c8ce6380daa33c267ccb0e2e66a02de.png

执行结果如下

3c8ce6380daa33c267ccb0e2e66a02de.png

示例2

3c8ce6380daa33c267ccb0e2e66a02de.png

执行后结果

3c8ce6380daa33c267ccb0e2e66a02de.png

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

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

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

作业

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值