定义变量

  1. name1='zdkk' # 单引号定义字符串
  2. name2="zdkk" # 双引号定义字符串
  3. name3=zdkk # 可以不加引号,也是字符串


使用变量

使用变量,必须加上$符号,或者${}符号。花括号是可选的,主要为了帮助解释器识别变量边界。

  1. name=zdkk
  2. echo $name # 输出zdkk
  3. echo ${name} # 输出zdkk
  4. echo ${name}Learning # 输出zdkkLearning

已定义的变量,可以被重新定义

  1. name=zdkk
  2. echo $name # 输出 zdkk
  3. name=abc
  4. echo $name # 输出 abc

只读变量

使用readonly或者declare可以将变量变为只读。

  1. name=zdkk
  2. readonly name
  3. declare -r name # 这两种方式均可将name变为只读变量
  4. name=abc #会报错,因为此时name为只读变量

删除变量

  1. name=zdkk
  2. echo $name # 输出 zdkk
  3. unset name
  4. echo $name # 输出空行

变量类型

  • 局部变量
  • 环境变量
  • shell变量

    ✨字符串

    字符串可以用单引号,也可以用双引号,也可以不用引号。

他们之间的区别:
单引号:所见即所得

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

echo 'abc''def' 输出 abcdef
双引号:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
  • 双引号中命令可以被执行

不加引号
基本等同于加双引号,但有区别

  1. str="Hello World!"
  2. expr $str # expr: syntax error: unexpected argument 'World!'
  3. expr "$str" # Hello World!
  1. echo \& # 输出 &
  2. echo "\&" # 输出 \&

获取字符串长度

  1. name=zdkk
  2. echo ${#name} # 输出 4

提取子串

  1. name="Hello, zdkk"
  2. echo ${name:0:5} # 输出 Hello