shell脚本中变量与运算及简单编程示例

一、变量


        在Linux shell脚本的变量中,分为系统定义的变量和用户定义的变量。这些变量是用来调用一个数值或字符值。定义变量时,不需要声明变量类型。


1、系统变量


        在Linux系统中创建了并维护,通常以大写字母定义,在脚本或终端,我们可以使用$查看或引用这些变量。


2、用户定义的变量


        shell脚本中允许我们设置并使用用户自己定义的变量,这些变量在脚本执行时,启用,当脚本执行完毕,变量会释放,不再占用内存。定义变量时,注意不能超过20个字符,可以由字母、数字、和下划线组成。最后由等号将变量赋值,当为变量赋值时,不能使用$。当使用命令为变量赋值时,要使用用反引号。


3、位置变量


        当脚本需要输入参数时,就要使用位置变量为脚本传递参数,在脚本中用$0,$1,$2,…按顺序表示参数。其中$0表示脚本命令本身,从$1开始计算运行脚本时后面的参数。除了这些,还有一些特殊的符号,比如$*表示把传递给脚本的所有参数合并到一起,变成一个新的字符串,而$@则表示传递到脚本的所有参数,放在一起,但是各自都是独立的字符串,互不影响。$#表示传递到脚本中的参数的个数。

4、算数 

        bash中的有多种方法可以实现算数赋值,常用的有以下三种:

            (1)let A=算式

blob.png

                (2)A=$[算式]

blob.png

                (3)A=$((算式))

blob.png

Linux中的运算符:+, -, *,/,%取模(取余),**(乘方),+=(自加后赋值),-=(自减),*=(自乘),/=(自除),%=(取余),++(等于+=1),–(等于-=1)

二、逻辑运算

    逻辑运算分为两种状态1和0,三种基本运算,与,或,非。

    与(&):两数相与时,都为1,结果才是1,其余结果都是0

    或(|):两数或运算时,都为0,结果才是0,其余结果都是1

    非(!):非1为0,非0为1

    短路运算

    短路与(&&):第一个为0,结果必定为0; 第一个为1,第二个必须要参与运算; 

    短路或(||):第一个为1,结果必定为1; 第一个为0,第二个必须要参与运算;

 

    异或(^):异或的两个值,相同为假,不同为真。

三、示例

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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


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


blob.png


blob.png

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


blob.png


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


echo {1..100} |tr ' ' '+' |bc


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

blob.png

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

(0)
zhanghuanyuzhanghuanyu
上一篇 2016-08-15 09:22
下一篇 2016-08-15 09:24

相关推荐

  • 实现真实的机柜模拟图[原创]

    一般能反映机房设备位置、结构我们都喜欢通过网络拓扑图来展现,但个人感觉还不够直观、明了的表现出自己想要的结果(自己太挑剔了,呵呵)。因此写一个生成真实机柜模拟图平台,实现与真实服务器外观、服务状态、空闲位置等信息。在线效果图http://blog.liuts.com/idc/系统截图1、平台显示某一排截图2、平台显示某台服务器详细信息截图3、状态说明2U服务…

    Linux干货 2015-03-27
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01
  • 通过堡垒机代理SSH运行Ansible(译)

    有一种常见的网络安全模式是阻止私有网络外部对应用服务器的所有连接(指除了业务数据外其它的连接,如后台管理系统和内部业务系统。译者注),然后使用 DMZ 区域中的 堡垒机 来选择性的将到服务器的流量加入白名单。 我们有这样的一个服务器池,只允许来自特定 IP 地址的 SSH 流量。这些服务器还由 Ansible…

    Linux干货 2015-02-14
  • Liunx权限的管理

    一、权限 获取某种资源的能力。对于Liunx而言,一切皆文件。所以,对于Liunx的权限定义,也就是定义文件被不同用户访问能力的过程。 权限分为三种:r、w、x 文件 r:查看文件内容 w:修改文件内容 x:可以将文件启动运行 目录 r:可以使用ls命令查看目录中的文件名 w:可以在目录中创建或删除文件(能否删除文件,取决于用户对目录的写权限 x:可以cd到…

    Linux干货 2015-04-03
  • 计算机组成及Linux基础

    第1题:描述计算机的组成及功能 1.1计算机的组成       计算机是有 运算器,控制器,存储器,输入设备和输出设备组成计算机 1.2计算机各部件功能 运算器 对数据进行算术运算,逻辑运算和对数据进行加工处理 存储器 存储程序,数据和各种信号,命令等信息,并在需要时提供这些信息 控制器 是整个计算机的中枢神…

    Linux干货 2017-07-02
  • Http虚拟主机的应用

    一、http 1、 基于主机名实现三个虚拟主机 (1)yum安装httpd (2)注释中心主机的网页路径 (3)创建三个虚拟机主机的文件路径 (4)创建三个虚拟机主机的文件网页index.html (5)更改hosts文件进行映射 (6)关闭防火墙和Selinux进行测试(测试步骤是在本机的虚拟机上测试) 2、每虚拟主机使用独立的访问日志和错误日志 (1)给…

    Linux干货 2016-10-08

评论列表(1条)

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

    题目重新自拟,总结好变量的知识。