什么是变量

  1. 变量必须以字母或下划线开头,名字中间只能由字母,数字和下划线组成
  2. 变量名的长度不得超过 255 个字符
  3. 变量名在有效范围内必须唯一
  4. 变量默认类型都是字符串

变量的分类

  1. 字符串

  2. 整型

  3. 浮点型

  4. 日期型

用户自定义变量

  • 变量的值是自己定义的

  • 变量名不能为数字开头

  • 等号左右两边不能有空格

定义变量

name="zhangsan"
age=10

输出变量值

echo $name
# zhangsan
echo $age
# 10

值默认都是字符串

# 值默认都是字符串
x=1
y=2
z=3

k=$x+$y+$z
echo $k
# 1+2+3

在赋值的时候引用变量

m="$x"2
n=${x}2

echo $m 
# 2
echo $n
# 2

set

查询系统中默认所有已经生效的变量,包括系统变量,也包括自定义变量

set | grep zhangsan
# name=zhangsan

unset

删除变量

unset name

环境变量

  • 环境变量是全局变量,而自定义变量是局部变量

  • 自定义变量会在当前的 shell 中生效,而环境变量会在当前 shell 以及其子 shell 中生效,也是临时生效的

  • 这种变量主要保存的是和系统操作环境相关的数据

  • 变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的

自定义环境变量

export 变量名=变量值
export envName=prod

env

仅仅用来查看环境变量,而不看到本地变量

env | grep envName

常用环境变量

变量名 含义 示例
HOSTNAME 主机名 HOSTNAME=localhost
SHELL 当前的 shell SHELL=/bin/bash
HISTSIZE 历史命令条数 HISTSIZE=1000
SSH_CLIENT 当前操作环境如果是用 SSH 连接的话,这里会记录客户端 IP SSH_CLIENT=192.168.1.100 57596 22
USER 当前登录的用户 USER=root

path

  1. 系统搜索路径:echo $PATH

  2. 如果想把一个自定义的脚本 /root/shells/hello.sh 直接可以执行:

    • 方式一:把这个文件拷贝到目标目录下:
    • 方式二:把脚本所在目录添加到环境变量中的 PATH 路径中
      # linux 系统中的分割符是 :
      # window 系统中的分隔符是 ;
      export PATH="$PATH":/root/shells
      
      # 可以执行
      hello.sh
      

位置参数变量

  1. 这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
    |位置参数变量 |作用|
    |-----------|—|
    |$n |n 为数字,$0 代表命令本身,$1-$9 代表第 1 到第 9 个参数,10 以上的参数需要用大括号包含,如 ${10}|
    |$* |这个变量代表命令中所有的参数,$* 把所有的变看数看成一个整体|
    |$@ |这个变量也代表命令行中所有的参数,不过$@把每个参数进行区分|
    |$# |这个变量代表命令行中所有参数的个数|

  2. $n 示例:

    SHELL
    SHELL
    #!/bin/bash
    num1=$1
    num2=$2
    sum=$((num1+num2))
    echo $sum
    
    # 第一个参数 3,第二个参数 4
    sh sum.sh 3 4
    
  3. $* 示例:

    SHELL
    SHELL
    #!/bin/bash
    for i in "$*"
      do
        echo "i=$i"
      done
    
    sh for2.sh 1 2 3
    i=1 2 3
    
  4. $@ 示例:

    SHELL
    SHELL
    #!/bin/bash
    for i in "$@"
      do
        echo "i=$i"
      done
    
    sh for.sh 1 2 3
    i=1
    i=2
    i=3
    
  5. $# 示例:

    SHELL
    SHELL
    #!/bin/bash
    echo "$#"
    
    sh for3.sh 1 2 3
    3
    

预定义变量

  1. 是脚本中已经定义好的变量,变量名不能自定义,变量作用也是固定的

    位置参数变量 作用
    $? 最后一次执行的命令的返回状态。0 表示正确执行,非 0 表示不正确执行
    $$ 当前进程的进程号(PID)
  2. 示例代码

    echo $?
    echo $$
    

read

  1. 语法:read [选项] [变量名]

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

    SHELL
    SHELL
    #!/bin/bash
    read -p 'please input your name:' -t 5 name
    echo -e "\n"
    read -p 'please input you gender[m/f]:' -n 1 gender
    echo -e "\n"
    read -p 'please input your password:' -s password
    echo -e "\n"
    echo $name,$gender,$password
    
    sh read.sh
    
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 什么是变量
  2. 2. 变量的分类
  3. 3. 用户自定义变量
    1. 3.1. 定义变量
    2. 3.2. 输出变量值
    3. 3.3. 值默认都是字符串
    4. 3.4. 在赋值的时候引用变量
    5. 3.5. set
    6. 3.6. unset
  4. 4. 环境变量
    1. 4.1. 自定义环境变量
    2. 4.2. env
    3. 4.3. 常用环境变量
    4. 4.4. path
  5. 5. 位置参数变量
  6. 6. 预定义变量
  7. 7. read