样例一: name=12 &注意,name= 12 是错误的写法,因为12前面有空格,而且没有跳跃字符 注意:指令是从左到右执行,当出现单双引号镶套使用时,会先执行内部的引号。 样例二: name=VBird\’\ name &使用跳跃字符将单引号,空字符变成一个普通字符 样例三: 在name变量后增加“yes”字符串 name=${name}yes
这是一个随便记录的笔记:给自己写的
首先声明:特殊字符:换行符,空白符号等
1.双引号内的特殊字符,可以保留原本的特性:eg:"$a"得到的是a变量的内容,而不是a
2.单引号内的特殊字符,不能保留原本的特性,只能作为一般的字符:eg:'$a' 就只能是$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-expr} 对于str没有值,var=expr 对于str有值(空字串也算有值的一种)var=$str
var=${star:-expr} 对于st没有值,var=expr 对于str为空字串,var=expr 对于str为非空字串,var=$str
对于变量'?' 有点类似c语言中的三目运算符,但是也有点不同
var=${str?不存在}, 若,str存在则, var=$str, 否者, var=不存在