Linux基础知识系统学习.NO24——shell中的运算符和配置文件

11.3.Shell运算符

11.3.1. 运算符概述

shell是一个典型的弱类型语言,无论什么变量都默认是字符串,但是如果想要定义为其他类型,还需要特殊声明。
特殊声明变量类型使用命令declare [+/-]选项 变量名,+号表示取消变量的类型属性,-号表示给变量设定类型属性,选项有i整型;a数组型;x环境变量;r只读变量;-p显示指定变量的被声明类型。
比如declare -i num,此时这个num变量就是一个整型数。而且这个变量可以在这一行被运算,如num1=1;num2=2;
declare -i num= $ num1+ $ num2,此时num就是3这个数,而且不用先将num1和num2定义为整型。
数组定义:shell中的数组定义需要每个成员都声明并且初始化,然后最后一个用declare声明为数组,如:animal[0]=cat
animal[1]=dog
delclare -a animal[2]=fish
这样就完成了这个数组的声明,使用${数组名[角标]}的格式,如echo ${animal[1]} 就会打印出dog;如echo ${animal[*]}就会打印出数组内所有成员,即支持通配符,如果是echo ${animal}就会打印出第一个成员,即不写脚标,默认打印第一个。
declare -x+变量名,和命令export+变量的作用一样,实际上export命令实现原理就是执行declare -x。
只读属性是指,将一个变量声明为只读改变了将完全不能操作,只读以后,该变量完全不能修改、删除、该属性,甚至declare +r删除只读属性也不可以。

11.3.2. 数值运算方法

之前看到使用declare -i+变量的命令可以执行一次运算。但是如果是为了运算使用这样的命令会很麻烦,所以有更简单的工具。
expr或let数值运算工具,这两个工具的格式基本一样。基本格式是num=$(expr $num1 + n u m 2 ) , 注 意 等 号 两 侧 不 能 有 空 格 , 括 号 两 侧 不 能 有 空 格 , e x p r 和 num2),注意等号两侧不能有空格,括号两侧不能有空格,expr和 num2),expr之间必须有空格,加号两边必须有空格。num1和num2要先定义好,如num1=1,num2=2.
expr工具好像也比较复杂,还有更简单的方法:
“$ ((运算式))”或”$ [运算式]”,注意使用双括号是,左括号外面的$前后不能有空格。
shell中支持的运算符如下:
在这里插入图片描述
还有最高优先级的小括号,()先运算小括号里的,再运算小括号外的。

11.3.3. 变量测试

变量测试时shell中特有的内容,但是格式复杂多用,不过语法简单。变量测试工具的作用是在一个比较复杂的脚本中,可能不能直接查询一个变量的值,这个时候通过变量置换规则,查看另一个置换变量的值就能判断原变量的值。
在这里插入图片描述
原则上,shell中的脚本语言访问人数很早,基本上就只有管理员一个人访问,所以更可能的使得代码逻辑简单,代码长一点无所谓,shell脚本中更加追求易读,而不是效率。

11.4.环境变量配置文件

11.4.1. 环境变量配置文件简介

环境变量的作用是定义每个用户的操作环境,修改配置文件过后,就需要注销重新登录才能生效,使用source命令可以不用重新登录。命令格式是source+配置文件或者.+配置文件,用于重新加载配置文件。
将PATH,HISTSIZE,PS1等环境变量写入对应的环境变量配置文件,每次开机就会自动加载这些环境变量。所以环境变量配置文件主要是定义默认的环境变量。
重要的登录时相关的环境变量配置文件有/etc/profile; /etc/profile.d/*.sh; ~/.bash_profile; ~/.bashrc;/etc/bashrc.etc目录下的环境变量会对所有用户起作用,跟目录下的只对root用户起作用,相应的每个用户的家目录都有这个环境变量配置文件。

11.4.2. 环境变量配置文件的功能

正常的启动过程是这样的按顺序加载这些配置文件
在这里插入图片描述
不正常的启动过程是指通过su直接切换用户,那么配置文件加载顺序则是7234然后开始命令提示符,不重复加载156的文件。
/etc/profile:USER变量(检查登录用户);LOGNAME(检查登录名字);MAIL(检查登录邮箱);PATH变量;HOSTNAME(检查主机名);HISTSIZE(设置历史记录条数);umask(设置umask);调用/etc/profile.d/*.sh系列文件。主要是调用了/etc/profile.d/lang.sh,然后这个文件主要又是调用了/etc/sysconfig/i18n,里面的环境变量是语言环境设置,Centos7及之后的有所不同,i18n的位置有所不同,但前面的文件都一样,也都是会打开i18n文件。
/.bash_profile:首先准备加载下一个文件,即/.bashrc,然后将HOME/bin写入PATH,再让PATH重新生效。总之每个环境变量配置文件都会按顺序,前面的文件都会打开后一个文件,同时也说明了,在任何一个配置文件中修改环境变量,都可以生效。如果多个配置文件配置了同样的内容,那么最后一个才生效。
不过,如果是通过不正常启动的用户,那么各种环境的生效结果都是在/etc/bashrc中决定的。
简单总结:修改历史命令条数在/etc/profile;修改别名/.bashrc;修改用户提示符提示在/etc/bashrc.

11.4.3. 其他环境变量配置文件

1.~/.bash_logout,注销时生效的环境变量配置文件,退出登录时候执行的文件,里面暂时没有什么东西,但是可以自己填写,比如在文件中写入history -c,则每次退出登录就会清空历史记录。
2.~/bash_history,存放历史记录的文件。该文件存放在硬盘中,所以不占内存。
3./etc/issue,本地终端警告信息,也就是开机之后能看到的信息,比如写上如果你没有权限就马上退出我的计算机这样的信息,还有一些转义符号可以使用。\d系统日期;\s操作系统名称;\l登录的终端号;\m硬件体系结构;\n主机名;\o域名;\r内核版本;\t当前系统时间;\u当前登录用户的序列号。
这个文件的修改只是本地终端能看到,远程终端无法看到。如果这些警告或提示想要远程终端也要看到,那么文件内容修改需要修改/etc/issue.net文件。不过是否能在远程终端显示提示还需要在/etc/ssh/sshd_config文件中加入一行内容才可以显示在远程上:Banner /etc/issue.net。不过远程不显示转义符号。
4./etc/motd;登录成功警告信息,不管本地还是终端都能看到提示,就像上面两个文件的合体版,不同的是前面两个文件的提示是在登录之前,而这个文件则是要登录之后才能看到提示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值