小白linux bash 学习一 变量定义

来源:互联网 发布:工业网络交换机厂家 编辑:程序博客网 时间:2024/05/21 07:57

bash  变量



1 变量

    echo $变量 ,可以通过$变量名或者${变量名} 来获取变量的内容
    如 echo $PATH  
    使用env命令即可全部列出系统预设的全部系统变量了。

  •    PATH 决定了shell将到哪些目录中寻找命令或程序
  •    HOME 当前用户主目录
  •    LOGNAME 当前用户的登录名
  •    HOSTNAME 指主机的名称
  •    SHELL 前用户Shell类型
  •    LANG 语言相关的环境变量,多语言可以修改此环境变量
  •    PWD 当前目录


不过evn 只是显示系统的环境变量。当然还有其他预设的变量 ,看可以使用set 命令查看
set命令不仅会显示系统预设的变量,也可以连同用户自定义的变量显示出来

那么如何定义一个变量,并给他赋值呢? 

myname=aaa

这样就完成一个最简单的变量声明和赋值,很简单吧!!

如果我们需要进行更加完整的一些变量赋值,那么就要好好看一下的内容了。


定义变量时候的规则

a. 设定变量的格式为”a=b”,其中a为变量名,b为变量的内容,等号两边不能有空格;

b. 变量名只能由英数字以及下划线组成,而且不能以数字开头;

c. 当变量内容带有特殊字符(如空格)时,需要加上单引号;如果包含$符号,可以直接定义,不用加单引号

如果变量内容里面需要带单引号,那么就需要在内容外面加上双引号。

d. 单引号可以让特殊字符变成普通字符,

如myname=$PATH ,获得变量PATH的值,赋给变量myname

echo myname  

结果是PATH的值

加上单引号 myname='$PATH'

结果是$PATH

e.双引号,可以保留里面的特殊字符的作用

myname="$PATH"

结果是PATH的值

f.转义字符 \ 可以对特殊字符 enter,$ ,\,空格,!等变成一般字符,失去他们的作用

g.如果我们的命令中,需要获取其他命令的结果,那么可以使用$()或者反单引号,一般使用$()更加清晰


以上定义出来的变量是字符串类型变量,如果我们现在执行命令

a=10+10
echo $a

10+10
看出来了吧。默认变量是字符串类型的。

如果我们现在需要定义其他类型的变量该怎么做?

可以使用declare 的方法

declare  [-a i x r]

-a 数组

-i  Integer(数字)

-x  把变量变为环境变量

-r 设置变量为只读类型变量

例如我们现在要定义一个数字类型的变量,并且给他赋值

declare -i  sumsum=10+10echo $sum20

如果我们需要一个数组类型的变量

declare -aa[0]='aaa'a[1]='bbb'echo ${a[0]}aaa


如果我们需要查看一个变量的类型


如果我们需要取消某个变量的类型

declare + [a|i] 变量名

前面光讲如何设置变量,如果想取消某个变量怎么办?只要输入”unset 变量名即可


以上的这些变量的声明和赋值,只会在当前shell中生效,如果我们切换用户,那么该变量的值就没有了



获取字符串长度:


string="abcd"
echo ${#string} #输出 4
提取子字符串


string="alibaba is a great company"
echo ${string:1:4} //输出liba


string="alibaba is a great company"
echo  $(expr index ${string}  great )

找出字符串中great的位置




那么如何让自己自定义的变量并不仅仅在当前shell 使用呢

如果想要系统所有的用户都生效,那么需要修改/etc/profile 文件

使用vi命令,在文件中添加一行  ,编辑该文件的时候,如果当前用户对文件没有写入权限,那么需要先切换到系统用户赋予权限或者直接用 root用户进行修改


写入文件之后,可以选择重启系统生效,也可以自行命令立刻生效




未完待续








0 0
原创粉丝点击