AI智能
改变未来

shell变量的定义(二)

文章目录

  • 一、变量的定义
  • 二、在shell中变量的种类
  • 1.环境变量
  • 2.自定义变量
  • 3.区别
  • 三、变量的设置规则
  • 四、语系变量locale
  • 五、变量键盘读取read
  • 六、变量的声明declare、typeset
  • 一、变量的定义

    变量就是在内存中分配一块区域将这块区域起一个名字这个名字就是变量名,然后将用户赋予的数据存入到这块区域内这个内容就是变量内的数据,通俗来讲的话就是使用一个比较简单的名字来替换一个比较复杂或者容易变动的名字。(最大的好处就是方便)

    二、在shell中变量的种类

    1.环境变量

    1)环境变量的定义:环境变量就相当于全局变量,作用于所有shell环境中,PATH、LANG等都是环境变量,用于定义shell的环境。
    2)环境变量的有效范围:在所有的bash环境中都可以使用。
    2)环境变量的功能:env(观察环境变量与常用环境变量说明)、set(查看所有变量,包括环境变量与自定义变量)。

    #env详解XDG_SESSION_ID=2								#会话的keyHOSTNAME=localhost.localdomain				#主机名SELINUX_ROLE_REQUESTED=						#selinux的模式TERM=xterm										#终端的使用环境x windowSHELL=/bin/bash								#当前使用shellHISTSIZE=1000									#记录命令的条数SSH_CLIENT=10.0.0.254 51967 22				#使用SSH客户端的信息SELINUX_USE_CURRENT_RANGE=					#selinux限制usr的应用范围SSH_TTY=/dev/pts/1							#SSH访问的终端是哪个USER=root										#当前使用者的名称LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:...	#颜色显示MAIL=/var/spool/mail/root						#mail的存放目录PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin		#环境变量PWD=/root										#当前的工作目录LANG=en_US.UTF-8								#当前使用编码语系SELINUX_LEVEL_REQUESTED=						#selinux的水平要求HISTCONTROL=ignoredups						#控制命令历史的输入内容# ignoredups 只能剔除连续的重复条目#erasedups清除整个命令历史中的重复条目SHLVL=1											#当前的shell嵌套层次,初始为1HOME=/root										#当前使用者的加目录LOGNAME=root									#登录账号为rootXDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/shareSSH_CONNECTION=10.0.0.254 51967 10.0.0.2 22	#SSH登录的端口号IP以及目的地址端口LESSOPEN=||/usr/bin/lesspipe.sh %sXDG_RUNTIME_DIR=/run/user/0_=/usr/bin/env									#上一次使用的命令最后参数

    2.自定义变量

    1)自定义变量的定义:用户自己定义的变量,是临时的只会作用在当前的bash进程中。
    2)有效范围:只在创建变量的进程中使用

    3.区别

    1)子进程会继承父进程的环境变量,但是不会继承父进程的自定义变量。
    2)区别验证

    ```bash#验证自定义变量[root@localhost ~]# a=\'My name is Tom\'#赋值方法[root@localhost ~]# echo $aMy name is Tom#输出结果[root@localhost ~]# bash#创建一个新的bash[root@localhost ~]# echo $a#在新的子进程内变量a为空#验证环境变量[root@localhost ~]# export a=\'My name is Tom\'#使用export将a定义为环境变量[root@localhost ~]# echo $aMy name is Tom[root@localhost ~]# bash[root@localhost ~]# echo $aMy name is Tom#创建新的子进程后变量a内还是有值

    三、变量的设置规则

    1)	变量与变量内容以 = 号连接例:name=Tom2)	变量名称不能以数字开头例错误示范:2name=Tom输出结果:sh: 2name=Tom: 未找到命令...3)	变量内容若有空格可以用【””】或【’’】括起例:name=cheng\" \"long输出结果:cheng long4)	双引号的特殊字符可以保留原本的特性例:var=\"lang is $LANG\"输出结果:lang is zh_CN.UTF-85)	单引号内的特殊字符则为一般字符(纯文本)例:var=\'lang is $LANG\'输出结果:lang is $LANG6)	使用反单引号【`命令`】或【$(命令)】格式让命令内的内容赋给另一个变量例:version=$(uname -r)输出结果:3.10.0-862.el7.x86_64例:进入内核模块cd /lib/modules/$(uname -r)/kernel7)	声明全局变量export [变量名]例:export version作用:在bash中输入bash启动另一个bash后也可以获得全局变量内的值仅执行export时会把定义变量列出来8)	取消变量unset [变量名]例:unset version作用:释放该变量在系统内存中占据的存储空间

    四、语系变量locale

    语系:影响交互式命令行界面显示的英文还是中文或者是其他语言
    1)locale -a —>查看所有支持语系
    2)locale —>查看现在的编码结果

    输出结果:LANG=		--->主语言的环境...LC_ALL=		--->整体语系的环境#设置LANG和LC_ALL这两个变量,其他变量就会被替换#配置目录:/etc/locale.conf#转换语系:export LC_ALL=en_US.utf8; locale

    五、变量键盘读取read

    可以与用户以交互式的方式进行变量赋值

    1. read [-pt] variable
      -p:添加提示信息
      -t:等待秒数
    2. 例:
    [root@localhost ~]# read -p \"请输入你的名字:\" -t 10 a请输入你的名字:成龙[root@localhost ~]# echo $a成龙

    六、变量的声明declare、typeset

    声明变量的类型并使其具有一定的特性(数组、整数、全局、只读)
    1)declare [-aixr] variable
    -a:将变量定义为array数组类型
    -i:将变量定义为integer整数类型
    -x:将变量定义为export环境变量类型
    -r:将变量定义为readonly类型,该变量不能被更改类型,也不能unset释放掉
    -p:单独列出变量的类型
    2)例:

    #整数类型[root@localhost ~]# sum=10+20+30[root@localhost ~]# declare -p sumdeclare -- sum=\"10+20+30\"#查看类型为默认类型(字符串)[root@localhost ~]# echo $sum10+20+30[root@localhost ~]# declare -i sum=10+20+30[root@localhost ~]# echo $sum60[root@localhost ~]# declare -p sumdeclare -i sum=\"60\"#类型变为-i整数类型#使用sum直接赋值则会输出字符串,而转换成整数类型后,输出的就是计算结果#变量类型默认字符串#bash环境中的数值运算,默认只能达到整数类型,1/3等于0#只读类型(readonly)[root@localhost ~]# declare -r sum=10+10+20[root@localhost ~]# declare -p sumdeclare -r sum=\"10+10+20\"[root@localhost ~]# unset sumbash: unset: sum: 无法反设定: 只读 variable#定义为只读变量后,必须要注销才可以释放此变量
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » shell变量的定义(二)