一.位置变量相关知识
1.位置变量定义:在脚本代码中调用通过命令行传递给脚本的的参数
2.位置变量种类:
$1 $2 … :对应第一、第二…参数 shift [n]换位置
$@:传递给脚本的所有参数,每个参数为独立字符串
$#:传递给脚本的参数的个数
$*:传递给脚本的所有参数,全部参数合为一个字符串
$0:命令本身
注意:$#和$@只有加上“”才会有区别
实例:写脚本argdesc.sh先说明各个变量的作用,脚本内容如下
实验结果如下
3.$@和$*的区别
$@:代表所有参数,每个参数作为独立字符串
$*:代表所有字符串,把他们作为一个整体
(1)新建脚本文件1.sh,让其调用2.sh,内容如下
(2)新建脚本文件2.sh,分别调用“$@”、“$*”,内容如下
(3)给予执行权限运行,此时把1.sh的参数作为整体
4.$#的说明
(1)$#指的是脚本调用多少参数
(2)在上边使用过的2.sh中修改,内容如下
(3)执行2.sh,结果如下
总结:不论里边是否调用外边参数,$#表示的是外边的参数个数总和
二.作业
1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。
脚本内容如下:
执行结果如下
2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
文本内容如下:
运行结果如下:
3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
脚本内容如下:
运行结果如下:
4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
脚本内容如下:
执行结果:
5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
脚本内容如下:
结果如下:
6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
脚本内容如下:
结果如下:
7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
脚本内容如下:
结果如下:
8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
脚本内容如下:
结果如下:
9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
脚本内容如下:
结果如下:
10、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写
脚本内容如下:
结果如下:
11、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。
脚本内容如下:
结果如下:
12、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
脚本内容如下:
结果如下:
13、计算1+2+3+…+100的值
脚本内容如下:
结果如下:
14、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之
脚本内容如下:
结果如下:
原创文章,作者:mengzhiqian,如若转载,请注明出处:http://www.178linux.com/34786
评论列表(1条)
对位置变量总结的详细,作业完成的也很认真,但是对各个变量之间的差别,更应用场景需要有一个完整的总结哦,