shell基础——变量

本文介绍了Shell中的变量,包括变量的定义、赋值和输出方式。讲解了环境变量的概念,它们如何影响子进程,并提供了设置和查看环境变量的方法。强调了永久设置环境变量需要在特定配置文件中进行,如.bash_profile或/etc/profile。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BASH:主要的优点:
命令编修能力;
命令与文件补全功能;
命令别名设置功能;
工作控制、前景背景控制;
程序化脚本;
万用字符;

1、什么是变量?
1、 让某一个特定的字符串代表不固定的内容。
2、 变量就是让一组文字或符号等来取代一些设置,或者是一串保留的数据。
3、变量的格式:变量名=变量内容(变量名一般设置为大写字母,专业一些)。

设置变量的规则:
1、 变量与变量内容以一个等号“=”来链接;
2、 等号两边不能直接接空白字符;
3、 变量名称只能是英文字母与数字,但是开头字符不能是数字;
4、 变量内容若有空白字符可以使用双引号,或单引号讲变量内容结合起来。双引号内的特殊字符如$等,可以保有原本的特性;单引号内的特殊字符则仅作为一般字符(纯文本)。
5、 可用转义符“\”将特殊符号变成一般字符;
6、 在一串指令的执行中,还需要借由其他额外的指令所提供的信息时,可以使用反撇号,而不是单引号。
7、 若该变量需要在其他子程序执行,则需要一export来使自定义变量变成环境变量。
8、 通常大写字符为系统默认变量,自行设置变量可以使用小写字符,方便判断;
9、 取消变量的方法为使用unset: “unset 变量名称”例如取消myname的设置:unset myname。

有关shell变量定义、赋值及变量输出加单引号、双引号、反引号与不加引号的简要说明,如下表所示:

单引号
所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,这称为强引用
双引号
输出双引号内的所有内容;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、(默认)命令、转义字符解析出结果,然后再输出最终内容,推荐使用,这称为弱引用赋值时,如果变量内容中有空格,则会造成赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体来输出;如果内容中有命令(要反引下)、变量等,则会先把变量、命令解析出结
无引号.
赋值时,如果变量内容中有空格,则会造成复制不完整。而在输出内容时,会将有空格的字符串视为一个整体来输出;如果内容中有命令(要反引下)、变量等,则会先把变量、命令解析出结果,然后输出最终内容;如果字符串中带有空格等特殊字符,则有可能无法完整地输出,因此需要改加双引号。一般连续的字符串、数字、路径等可以不加任何引号进行赋值和输出,不过最好是用双引号替代无引号的情况,特别是对变量赋值时
反引号
“一般用于引用命令,执行的时候命令会被执行,相当于s0.赋值和输出都要用''将命令引起来

建议:

在脚本中定义普通字符串变量时,应尽量把变量的内容用双引号括起来;
单纯数字的变量内容可以不加引号;
希望变量的内容原样输出时需要加单引号;
希望变量值引用命令并获取命令的结果时就用反单引号或$( )。
env命令——查询环境变量。
random命令:随机产生的数字是在0——32768之间。

set命令:查询的是所有的变量,包括环境变量和自定义变量。

$:代表的是当前shell的PID号,如echo $$;

?:代表的是上一个指令的回传值,如echo $?

自定义变量与环境变量最大的区别是:该变量是否会被子程序(子shell)继续使用。

各种变量定义的作用域:
环境变量=全域变量
自定义变量=区域变量

关于系统中的环境变量解释:
在这里插入图片描述

PS1——系统特定变量名
其中PS1这个变量需要解释下,其他可以自行看懂,PS1可用的选项如下:

\d :可显示出“星期月日”的日期格式,如:"Mon Feb 2"
\H :完整的主机名称。举例来说,我的练习机为“study.centos.vbird”
\h :仅取主机名称在第一个小数点之前的名字,如我主机则为“study”后面省略
\t :显示时间,为 24 小时格式的“HH:MM:SS”
\T :显示时间,为 12 小时格式的“HH:MM:SS”
\A :显示时间,为 24 小时格式的“HH:MM”
\@ :显示时间,为 12 小时格式的“am/pm”样式
\u :目前使用者的帐号名称,如“dmtsai”;
\v :BASH 的版本信息,如我的测试主机版本为 4.2.46(1)-release,仅取“4.2”显示
\w :完整的工作目录名称,由根目录写起的目录名称。但主文件夹会以 ~ 取代;
\W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。
# :下达的第几个指令。
\$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $

用法示例

[root@localhost ~]# PS1='[\u@\h\w\A#\#]\$'     #添加上面的一些选项
[root@localhost~13:07#5]#cd /etc    #多执行两下命令
[root@localhost/etc13:07#6]#cd /boot
[root@localhost/boot13:07#7]#exit
#可以发现,执行PS1这个变量并结合一些选项的使用,可以暂时改变命令提示符的变化,
#并且后面的数字会每执行一次࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值