【Linux】Bash Shell之变量设置-阿里云开发者社区

开发者社区> 开发与运维> 正文

【Linux】Bash Shell之变量设置

简介:

变量设置规则:

1、 变量与变量的内容以等号“=”连接;

2、 等号两边不能够直接接空格符;

3、 变量名称只能是英文字母与数字,但数字不能是开头字符;

4、 若有空格符,可以使用双引号或单引号将变量内容结合起来,但要特别注意,双引号内的特殊字符可以保持变量特性,但单引号内的特殊字符则仅为一般字符;

5、 必要时需要以转义字符“”将特殊字符变成一般字符;

6、 在一串命令中,还需要通过其他命令提供的信息,可以使用这样的方式“command”(请特别注意,是键盘上方的数字键1左边的那个按键,而不是单引号。其外,这个符号之内的命令会先执行,其执行出来的结果将作为外部输入信息。(例:ls –l locate crontab` 先locate文件名数据,再用ls命令处理))。

7、 若变量为扩展变量内容,需以双引号及$变量名称,如“”$PATH”:/home”继续累加内容;

8、 若该变量需要在其他子程序中执行,则需要用export使变量变成环境变量(变量分为local变量和env变量,只有env变量才具有遗传性,但是子进程中的无论是local还是env都会随着子程序的消失而消失,而且父进程是无法使用其变量的);

9、 通常大写字母为系统默认变量,自行设置变量可以使用小写字母,便于判断(根据用户兴趣与喜好);

10、取消变量的方法为:“unset 变量名称”。
环境变量功能

1、 环境变量的说明:env

Environment的缩写,列出所有环境变量。

2、其他所有变量的说明:set

观察当前shell环境下的所有变量。一般来说,不论是否为环境变量,只要与当前shell的操作接口有关的变量,通常都会被设置为大写字母,即:在Linux默认情况下,使用{大写字母}来设置的变量一般为系统内定需要的变量。

需要注意的是:若当时有相当多人同时在线,那么你的变量只能给自己使用(除非改的是系统的默认参数文件,如/etc/profile),而不会干扰到别人。由于登录Linux之后会取得一个PID,而你的设置将只对这个PID与子程序。此外,这次登录所进行的变量(无论是local还是env)设置,如果没有更改配置文件,那么这次设置的变量在下次登录时将被取消(因为没有程序PID)。所以,如果想要变量每次都能在你登录时自动设置好,那么就必须将设置写入登录时加载的设置文件。

3、自定义变量转环境变量:export

取得一个bash后,即可得到一个程序,再执行一次bash,将进入“子程序”。那么进入子程序,所有父进程中自定义的变量将不再继续存在,会存在于子程序中的,仅有环境变量。

在引用他人的文件和其他程序时,export显得相当重要,如果忘记设置export的话,那么不同文件中的相同变量值,将需要一再重复设置,所以,只要在头一个文件使用export,那么后续的文件引用时,将会把变量内容读进来。如果export后面没有变量,此时将会把所有的“环境变量”显示出来。

4、语系文件变量locale

使用locale系统列出当前liunx主机内保存的语系文件,这些文件放在/etc/lib/locale/目录中,但是,当前的shell环境所支持的语系,要根据SUPPORTED这个变量来确定。如果想要修改系统的语系支持,可以修改/etc/sysconfig/il8n文件。当然还有一个比较安全的做法,通过个人的环境设置文件来设置LANG。

5、 变量键盘读取read、数组 array、声明 declare

read [-pt] variable

-p 后面可以接提示符

-t 后面可以接等待的秒数,指定秒数内没反应则命令会自动略过。

declare/typeset 两个功能一样,声明变量属性,后面没有任何参数,会将所有变量名和内容都调出来,就像set一样。

语法:declare [-aixr] variable

-a 变量定义为数组

-i 变量定义为整数数字

-x 变量定义为境变量

-r 变量定义为只读

array 读取,使用${数组}【${A[0]}】

6、获取变量的两种方式 echo $HOME和echo ${HOME}

在${variable}中可以修改变量【echo ${var#/*/}】

7、 命令别名设置:alias、unalias

定义规则与变量定义规则相同。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章