Shell基础之变量

461 阅读2分钟

什么是变量

  • 变量是计算机内存的单元,其中存放的值可以改变
  • 变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此他们十分有用

在Bash中,变量的默认类型都是字符串,跟其他的编程语言都不一样


变量的分类

  • 用户自定义变量
  • 环境变量:这种变量主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的

变量的定义

  • 变量名=变量值
  • 变量名不能数字为开头
  • 变量值里面有空格的话用双引号括起来
  • = 左右两边不能有空格
x=5
name="jie cao"

变量的调用

echo $变量名

echo $x
echo $name

y=6
z=$x+$y
echo $z     //5+6

变量的叠加

x=123
x="$x"123
echo $x     //123123
x=${x}123
echo $x     //123123123

变量的查看

set
    - 选项:
        -u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)

变量的删除

unset 变量名(变量名前面不要加$)


bash环境变量

  • 环境变量与用户自定义变量的区别

    • 环境变量是全局变量,用户自定义变量是局部变量,用户自定义变量只在当前的shell中生效,环境变量在当前shell和这个shell的所有子shell中生效
  • 对系统生效的环境变量名和变量作用是固定的

设置环境变量

export 变量名=变量值
或
变量名=变量值
export 变量名

查看环境变量

  • set 查看所有变量
  • env 查看环境变量

删除环境变量

unset 变量名

常用的环境变量

  • HOSTNAME:主机名
  • SHELL:当前的shell
  • TERM:终端环境
  • HISTSIZE:历史命令条数
  • SSH_CLIENT:当前操作环境用ssh连接的,这里记录客户端ip
  • SSH_TTY:ssh链接的终端时pts/1
  • USER:当前登陆的用户

PATH环境变量

  • PATH变量:系统查找命令的路径
  • 查看PATH环境变量:echo $PATH
  • 增加PATH变量的值 PATH = "$PATH":/root/sh

位置参数变量

  • ($0代表命令本身)
  • ($1-$9代表第一到第九个参数)
  • (十个以上的参数需要用大括号包含,如${10})
  • (*代表命令行中所有的参数,*把所有的参数看成一个整体)
  • (@这个变量也代表命令行中的所有参数,不过@把每个参数区分对待)
  • ($# 这个变量代表命令行中所有参数的个数)

预定义变量

  • ($? 最后一次执行命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了)
  • (? 当前进程的进程号(PID))
  • ($! 后台运行的最后一个进程的进程号(PID))
例如
ls && echo yes  ls执行结果为0后面执行
ls || echo no   ls执行结果不为0后面执行

接受键盘输入

read [选项] [变量名]

  • -p 提示信息:在等待read输入时,输出提示信息
  • -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
  • -n 字符数:read命令只接受指定的字符数,就会执行
  • -s 隐藏输入的数据,适用于手机密码信息的输入