Linux基础知识系统学习.NO23——bash变量、环境变量

11.2.Bash变量

11.2.1.变量与变量的分类

shell中的变量有一定的命名规则:变量名必须以字母或下划线开头,名字中间只能由字母、数字和下划线组成;变量名的长度不能超过255个字符;变量名在有效范围内必须是唯一的;原则上命名需要有一定含义,方便理解。
bash中的变量默认都是字符串,这一点和其他任何语言都不一样,比如有定义a=123,bash也不会认为a是一个整型,而是认为它是一个字符串,典型弱类型语言。
变量有很多类别:
用户自定义变量:变量自定义的,作用和内容都是户用自定义,一般用于程序中传递参数。
环境变量:这种变量保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的,也就是说,有很多系统定义好的环境变量,这些变量的名字和作用基本上是无法更改的,但是可以改变它的值。
预定义变量:变量名不能自定义,变量作用也是固定的不能自己增加变量。
位置参数变量:主要是用来向脚本当中传递参数或数据的,也是预定义变量的一种。

11.2.2.用户自定义变量

用户自定义变量是最自由的一种变量,可以随意定义更改删除增加,定义格式也很简单:变量名=变量值 如x=5;name=“xiao”.(注意等号两侧不能加空格)调用变量的一种方式是
echo $x就能得到5,不过需要注意,这个5是字符‘5’,而不是数字5.不能直接拿来做运算。定义变量时也不能识别运算符。
变量叠加是指将一个变量原值不变,然后在后面添加新内容,将变量加长。如果x=5;x=” $ x”4或x= $ {x}4,此时再打印x的值就是54.注意格式是双引号内再加 符 号 或 者 符号或者 跟大括号,变量叠加用于有时增加变量内容就会使用。
(这里那个双引号内的 $ 前后都不能有空格,这里这样写是因为这个文本编辑器如果不加空格会将 $ 当作特殊字符,后面多出会出现类似的情况,在shell中 $ 无论出现在哪里,前后都不应该有空格)

11.2.3. 环境变量

用户自定义变量只能在当前的shell中生效,而环境变量是对所有的shell都生效(在当前bash中使用bash命令可以进入子bash,命令exit可以退出到父bash,使用命令pstree可以查看进程树)
对系统生效的环境变量名和变量作用都是固定的。用户也可以自定义环境变量,使用命令export 变量名=变量值,就能自定义一个变量,任然在所有bash中都生效。
命令env可以看到所有的环境变量,一般环境变量都是大写(因为没有大写的命令,可以有效的防止冲突)
环境变量有很多,其实都是定义在各个配置文件中的。
PATH:系统搜索命令的路径,系统命令都保存在这个环境变量后的目录下,当执行命令时,系统就会搜索PATH下的目录下的内容。这是使用Linux命令最重要的一条环境变量。PATH默认只保存了7个位置,如果想要某个目录下(比如/home)的可执行文件也可以直接像命令一样不加路径直接执行,那么就可以使用变量叠加的手法:
PATH=${PATH}:/home/bin即可。但是这样是临时的,想要永久生效就需要修改对应的配置文件。

11.2.4. 语系变量

语系变量也是环境变量中的一种,使用命令lacale就能看到当前系统中有关语系的变量,而其中生效的就是 =zh_CN.UTF-8”这一条,即当前使用语系。
命令echo $LANG可直接查看系统当前语系,命令locale -a可以看到所有的语系。
字符界面是不支持中文编码的,所以如果需要在字符界面上显示中文就要安装第三方插件,如zhcon

11.2.5. 位置参数变量

$n,n为数字,$0代表命令本身,$1- $ 9代表第一到第九个参数,10以上的参数需要用大括号,如${10}。使用形式就和main的命令行参数一样。如./a.sh 1 2 在脚本中,$1就是1,第一个参数,$2就是2,第二个参数。不过问题在于:拿到一个陌生的脚本文件,并不知道需要输入多少个参数才可以正确执行此脚本。所以这并不适合第三方用户,只适合管理员自身。
$ #,在脚本当中,这个符号代表参数个数,注意不包括脚本名,如./a.sh 1 2 ,$#就是2.
$ *,在脚本中,这个符号代表命令行中所有的参数,不包括脚本名,并且把所有的参数看成一个整体,意思是,命令./a.sh 1 2,$*就是1 2,但是这是一整个字符串,1空格2,是一个整体。
$ @,在脚本中,这个符号代表命令行中所有的参数,不包括脚本名,不过把每个参数区分对待,意思是命令./a.sh 1 2,$ @就是1 2,但是$@更像一个数组,它包含了两个数,1 和 2.
6.预定义变量
$?:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0,则证明上一个命令执行不正确,具体返回值是多少,是根据具体命令是什么。
$$:返回当前进程的PID号。写在脚本中,执行后返回的就是执行这个脚本本身时的进程号。
$!:返回后台运行的最后一个进程的进程号。
7.接收键盘输入
read+[选项]+[变量名],-p”提示信息”:在等待read输入时,输出提示信息;-t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间;-n字符数:read命令只接受指定的字符数,就会执行;-s:隐藏输入的数据,适用于机密信息的输入
read -p “please input sex!” -s -t 10 -n 1 sex
echo $sex

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值