第十章,认识与学习BASH
样例一: name=12 &注意,name= 12 是错误的写法,因为12前面有空格,而且没有跳跃字符 注意:指令是从左到右执行,当出现单双引号镶套使用时,会先执行内部的引号。 样例二: name=VBird\’\ name &使用跳跃字符将单引号,空字符变成一个普通字符 样例三: 在name变量后增加“yes”字符串 name=${name}yes
这是一个随便记录的笔记:给自己写的
首先声明:特殊字符:换行符,空白符号等
1.双引号内的特殊字符,可以保留原本的特性:eg:"$a"得到的是a变量的内容,而不是a
2.单引号内的特殊字符,不能保留原本的特性,只能作为一般的字符:eg:'a这个字符串了。
3.可用跳脱字符'\'将特殊字符变成一般字符,这就像C语言中的转义字符一样(比如像输出%d,就必须写%%d):eg:"\ "就表示一个空格。
4.为变量扩增内容,使用':' eg:PATH=${PATH}:/home/bin 这样就追加了"/home/bin"的内容
5.若变量需要在其他子程序中执行,则需要使用'export'来将变量变成环境变量,eg:export PATH
子程序:在我目前的shell下,去启用另一个新的shell,那么那新的shell就是一个子程序。在一般情况下,父程序的自订变量是无法在子程序中使用的,但是通过export将变量变为环境变量后就可以使用了
name=VBird &父程序shell bash &进入到所谓的子程序中 echo $name &输出空,因为父程序的变量不能在子程序中使用 exit &退出子程序 export name &将name变量变成环境变量 bash echo $name &输出VBrid exit
环境变量的功能
常常使用的指令为env, export 这两个指令
&下面是列出所有环境变量的两种方式
方式一:
env
方式二:
export
常用的环境变量:
SHELL:告知我们,目前这个环境使用的shell是哪一只程序,linux默认使用/bin/bash
MAIL:当我们使用mail这个指令在收信时,系统就会去读取邮箱中的信件
PATH:可执行文件的搜索路径
用set观察所有变量(包含环境变量和自订变量)
bash中的变量:环境变量,与操作接口相关的变量,用户自定义变量
注意:在linux默认的情况下,使用大写字母来设置的变量一般为系统内所需要的变量。
比较重要的系统内部所需要的变量
1.PS1(提示字符的设置)
2.$:(关于shell的PID) 表示当前shell的线程代号
export:自订变量转成环境变量
将变量设置成环境变量的用处:举个例子,对于一个文件而言,当我需要使用几个不同的子程序去访问同一个文件时,如果不用export,就必须在每个程序中创建变量储存该文件的位置。这样非常麻烦。如果使用export,则只需要在父程序中创建一个变量来储存这个文件的位置,然后用export变成环境变量,这样子程序们都可以使用这个变量了。
为什么环境变量可以在子程序中使用?
1.当启动一个shell,操作系统会给shell一个记忆区块,此内存内的变量可以让子程序取用
2.若父程序的自订变量使用export变为环境变量时,系统会将该变量加入记忆区块中。
3.当再次载入一个shell,子shell会将父shell的环境变量记忆区块导入到自己的环境变量记忆区块中
使用键盘输入 read指令: 样例:在三十秒内输入自己的名字 read -p “请在30s内输入自己的名字:” -t 30 name 显示:请在30s内输入自己的名字:小明 echo ${name} 显示:小明 declare指令:读者自己学习
注意:bash对于变量有几个基本的定义:
1.变量类型默认为字符串,eg a=1+2, echo ${a}结果输出1+2,而不是3
2.默认最多只能达到整数比如1/2,被认为是0
对于变量'-'减号的使用
var=str
var=str
对于变量'?' 有点类似c语言中的三目运算符,但是也有点不同
var=str, 否者, var=不存在
作者:ALINGMAOMAO
出处:https://www.cnblogs.com/ALINGMAOMAO/p/11701067.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探