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

Linux系统Bash(Shell)基础知识(1)

[复制链接]

尚未签到

发表于 2018-8-27 06:11:02 | 显示全部楼层 |阅读模式
  上篇博文为大家介绍了关于shell程序设计的的一些特性,即命令别名,命令历史,快捷键,命令补全,命令行展开,命令执行结果,转义字符,通配符,IO重定向,管道等操作;这次继续给大家介绍关于shell程序设计的另一大特性——变量;
  shell程序中采用变量存放字符串,shell变量比C语言中的变量简单得多,没有众多存储类及类型的限制,也不需要预先定义,然后才能赋值,可以在使用时“边定义,边赋值”。
  shell有三类变量,环境变量,临时变量以及本地变量,环境变量是永久形变量,不会随着shell脚本的结束而消失,而临时变量是shell程序内部定义的,其适用范围仅限于定义它的程序,出了本程序后便不能使用;
  程序=指令+数据
  数据:文件系统中管理的那些文件,存储在内存里的数据称之为变量
  变量:一段连续的内存空间;为这一段内存空间取名为变量名;在这段内存空间中所存储的设备称为 变量值;
  =:赋值操作符
  赋值方法:VARNAME=VALUE(中间不加空格)
  变量名=字符串
  例如
  myfile=/usr/meng中的myfile是变量名,=是赋值号,字符串/usr/meng是赋予变量的值。在等号两边是没有空格的;
  VARNAME的命名规范:
  1.只能以字母或下划线”_”开头,不能使用数字,后面可以是任意字母数字和下划线;
  2.大小写严格区分;
  3.见名知意;
  4.书写规范
  1)   全大写:FILES
  2)   驼峰式:MyFile(每一个单词的开头为大写)
  5.不能与已知变量名相同(否则相当于替换已有变量名)
  根据不同的编程语言,变量可以分为两类:
  强变量:
  必须要在使用前先声明,而且要声明变量的类型;严格区分变量的类型;
  弱变量:可以随时使用随时声明,甚至可以不声明即使用;不对变量类型做硬性要求,如果没有指明变量类型,统一按照字符型对待;
  bash的变量即为弱变量;
  c c++java等均为强变量;
  引用变量的值:$(VARNAME)-->$VARNAME(有些特殊的场景必须写花括号)也称为变量替换;
  在程序中使用变量的值时,要在变量名前面加上一个$字符,他告诉shell,要进行变量值替换;
  例
  #dir=/usr/meng
  #echo $dir
  #/usr/meng(显示结果)
  命令替换:
  以两种形式可以将一个命令的执行结果赋值给变量。
  一种形式是:
  #VARNAME=`命令表`
  例
  $dir=`pwd`
  另一种形式:
  #VARNAME=$(命令表)
  例
  $dir=$(pwd)
  bash的变量种类:
  全局变量(环境变量):主要指作用范围,作用范围是整个shell进程,包括其子shell;
  本地变量:作用范围仅仅只是登陆的shell;不包括子shell;
  局部变量:作用范围仅仅只是当前的程序段一般用于函数;
  默认全局变量:
  位置参数变量:表明这个程序所调用程序的位置;$1,$2,$3。。。$n
  特殊变量:
  $?,$$,$#,$@,$*…
  $?:展开为最近一次所执行命令的状态返回值(退出状态)
  $#:位置参数的个数(以十进制表示);
  $*:从1开始连续编写所有的位置参数,当时用双引号来展开时,它展开为以特殊变量“IFS”的第一个字符分隔得值;用其显示的内容是很多个不同的值;
  $@:从1开始连续编写所有的位置参数,当时用双引号来展开时,它展开为一个单独的字符串;
  $$:展开为当前shell的进程标识符;
  $0:展开为shell或shell脚本的文件名;
  例
  #echo$0
  -bash
  变量的使用:
  变量的赋值:VARNAME=‘VALUE’(属于本地变量)
  撤销变量:#unset VARNAME
  声明环境变量:
  export VARNAME(导出,可以给所有子shell应用)
  export VARNAME=VALUE
  例
  [wjq@localhost ~]$ exportb='hello'
  [wjq@localhost ~]$ echo $b
  hello
  [wjq@localhost ~]$ bash
  [wjq@localhost ~]$ echo $b
  hello
  [wjq@localhost ~]$
  declare:
  -a:声明索引数组(如果支持)
  -A:声明关联数组(如果支持)
  -i:声明整形变量;
  -l:声明变量并将变量值转换为小写字母;
  -u:声明变量并将变量值转换为大写字母;
  -x:声明变量并将其导出为环境变量(全局变量);
  -r:设置只读变量,且无法使用unset撤销,只能关闭bash;
  例
  [wjq@localhost ~]$ declare-l s='HELLO'
  [wjq@localhost ~]$ echo $s
  hello
  [wjq@localhost ~]$ declare-u s='hello'
  [wjq@localhost ~]$ echo $s
  HELLO
  查看环境变量:
  set:
  export:
  env:
  声明局部变量:
  local VARNAME=VALUE(用于函数,仅仅只在函数的代码段中有效,当函数调用完毕则失效)
  配置文件:
  通用配置文件:/etc/bashrc,/etc/profile
  私人配置文件:~/.bashrc,~/.bash_profile
  将变量放入配置文件中才是永久生效的;
  注意:一般定义变量都是先做先用,并不需要改配置文件,如果修改声明变量,有可能会造        成系统漏洞,得不偿失,所以没有不要就不要改;


运维网声明 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-556920-1-1.html 上篇帖子: Linux要在shell 提示下创建新用户帐号 下篇帖子: shell脚本删除N天前的文件夹
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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