设为首页 收藏本站
查看: 728|回复: 0

shell编程基本概念及其变量类型

[复制链接]

尚未签到

发表于 2018-8-28 13:29:50 | 显示全部楼层 |阅读模式
  在众多语言中,大致可以将其分为两类
  编译型语言(静态语言):C,C++等,源代码需在开发环境中编写之后编译器编译,编译的过程最简单的理解就是将源代码转换为可以在机器上运行的二进制代码(机器码),源代码改动后,必须重新编译
  解释性语言(动态语言):shell,perl,python等,由解释器边解释边执行,一般解释器都是由静态语言开发的程序
  对于现在的linux发行版上大部分所采用的bash来说,bash脚本编程可以理解为:bash是由静态语言开发的程序,我们所编写的shell脚本其实就是我们在命令行下可以执行的命令(这些命令很可能都是由静态语言开发并编译好的)按照我们实际的需求去组织,控制这些命令的执行流达到目的,shell脚本对于系统自动化管理尤为重要
  我们知道,由于字符和数字的存储格式不同,所以需要的存储空间也不尽相同,而在程序的运行过程中,又经常需要临时性的保存数据,所以就经常需要用到变量,变量简单的理解就是内存中的存储空间,内存是有编址的,要向变量中读取数据,就需要向该变量所对应的地址单元中填写或者是读取数据,所以可以理解为在进程内部维护有变量名到期对应的内存地址的映射关系,正是因为不用类型的数据的存储格式以及所需空间都是不尽相同的,所以变量就分为了很多类型,在静态语言中,要使用变量就必须事先声明其类型以及存储空间,否则会造成缓冲区溢出等问题,所以静态语言对于变量的控制是非常严格的,在解释性语言当中,例如shell,在使用变量的时候不需要声明其类型,个人理解是因为shell这个程序会根据赋值情况检查,然后再shell内部做临时声明,相当于就是shell中的变量由shell程序来作为保护。shell中的变量默认都是字符型,不能进行算术运算
  shell的变量类型:按照作用域的不同划分
  环境变量:在当前shell及其子shell中有效
  本地变量:只在当前shell有效
  局部变量:在一个代码片段生效(函数中)
  系统变量:系统设定的变量,例如$?
  位置变量
  本地变量声明赋值:variable=value
  本地变量使用export关键字导出就可以成为环境变量:export variable
  局部变量使用local关键字
  查看当前系统变量:set
  查看当前系统环境变量:export或printenv
  在shell中,变量引用使用${variable},大部分情况下花括号可以省略,以一个例子说明:
  NAME=jerr
  echo $NAME 和echo ${NAME}的结果是一样的,但如果要输出为jerry
  echo ${NAME}y的输出结果就是jerry
  echo $NAMEy的输出结果就是$NAMEy,这就是加花括号与不加时的区别
  在执行一个shell脚本时,会启动一个子shell去执行,而不是在当前shell执行
  命令行启动的脚本:当前shell的环境变量对其生效
  非命令行启动的脚本:需按需求定义,因为其不是从shell启动就无法继承shell环境变量,可使用命令路径      


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557791-1-1.html 上篇帖子: shell命令之(二)rsync的艺术 下篇帖子: 手动清除内存shell【root权限】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表