样例一:
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=不存在

02-13 23:19