Linux-SHELL变量

变量设置规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
  2. 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
  3. 变量用等号连接值,等号左右两侧不能有空格
  4. 变量的值如果有空格,需要使用单引号或
    双引号包括。
  5. 在变量的值中,可以使用“\”转义符。
  6. 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含" 变 量 名 " 或 用 变量名"或用 "{变量名}包含。
  7. 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
  8. 环境变量名建议大写,便于区分。

变量分类

  1. 用户自定义变量,又叫做本地变量
  2. 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
  3. 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
  4. 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

四类变量从上往下依次自由度越来越小,优先级越来越低

本地变量

  • 变量定义:
[root@localhost ~]# name=lhx
[root@localhost ~]# name="lu hong xuan"
  • 变量叠加
[root@localhost ~]# aa=123
[root@localhost ~]# aa="$aa"456
[root@localhost ~]# aa=${aa}789
  • 变量调用
[root@localhost ~]# echo $name
  • 变量查看
# 查看所有变量
[root@localhost ~]# set
  • 变量删除
[root@localhost ~]# unset name

环境变量

  • 变量定义
# 临时定义
[root@localhost ~]# export name=lhx

[root@localhost ~]# age=19
[root@localhost ~]# export age

# 永久定义
  • 环境变量查看
[root@localhost ~]# env
  • 环境变量删除
[root@localhost ~]# unset name
系统常见环境变量介绍
  1. PATH:系统查找命令的路径(中间用:隔开,通过变量叠加的方式实现)

  2. PS1:定义系统提示符的变量
    修改系统提示符,建议使用默认。

参数描述
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
#:执行的第几个命令
$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$

示例:

[root@localhost ~]# PS1='[\u@\t \w]\$ '
[root@04:50:08 /usr/local/src]#PS1='[\u@\@ \h \# \W]\$‘
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]\$
环境变量配置文件及其作用

在这里插入图片描述

/etc/profile的作用:
  • USER变量:
  • LOGNAME变量:
  • MAIL变量:
  • PATH变量:
  • HOSTNAME变量:
  • HISTSIZE变量:
  • umask:
  • 调用/etc/profile.d/*.sh文件
~/.bash_profile的作用
  • 调用了~/.bashrc文件。
  • 在PATH变量后面加入了“:$HOME/bin”这个目录
~/.bashrc的作用
  • 定义默认别名
  • 调用/etc/bashrc
/etc/bashrc的作用(大部分针对nologin用户)
  • PS1变量
  • umask
  • PATH变量
  • 调用/etc/profile.d/*.sh文件
其他配置文件
  1. 注销时生效的环境变量配置文件: ~/.bash_logout
  2. history配置文件:~/bash_history
  3. shell本地终端欢迎信息: /etc/issue
转义符作 用
\d显示当前系统日期
\s显示操作系统名称
\l显示登录的终端号,这个比较常用。
\m显示硬件体系结构,如i386、i686等
\n显示主机名
\o显示域名
\r显示内核版本
\t显示当前系统时间
\u显示当前登录用户的序列号
  1. 远程终端欢迎信息:/etc/issue.net
    • 转义符在/etc/issue.net文件中不能使用
    • 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
  2. 登陆后欢迎信息(本地和远程):/etc/motd

位置参数变量

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

预定义变量

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

变量运算

方式一(不推荐):declare声明变量类型

shell中变量默认字符串类型,设置为数值类型,即可进行运算。

declare 语法

declare [+/-][选项] 变量名
选项:

  • -: 给变量设定类型属性
  • +: 取消变量的类型属性
  • -i: 将变量声明为整数型(integer)
  • -x: 将变量声明为环境变量
  • -p: 显示指定变量的被声明的类型
范例
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb

方式二(不推荐):expr或let数值运算工具

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和变量bb赋值
[root@localhost ~]# dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意“+”号左右两
侧必须有空格

方式三(推荐):“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ (())[运算式]”

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]

变量测试与内容替换(了解)

规则及其复杂和反人类,如果发现shell脚本中用到了,来查表即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值