博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux-SHELL变量
阅读量:4188 次
发布时间:2019-05-26

本文共 3141 字,大约阅读时间需要 10 分钟。

文章目录

变量设置规则

  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

位置参数变量

位置参数变量 作 用
$n n为数字,$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脚本中用到了,来查表即可。

在这里插入图片描述

转载地址:http://ywsoi.baihongyu.com/

你可能感兴趣的文章
php不用jsonp也能跨域
查看>>
solr作为一种开源的搜索服务器
查看>>
Pig分析数据过程
查看>>
linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
查看>>
pentaho套件
查看>>
软件产品经理职责
查看>>
Linux下Tomcat的安装配置
查看>>
UI即User Interface
查看>>
大数据要学习知识
查看>>
Elasticsearch Java API总汇
查看>>
SearchRequestBuilder常用方法说明
查看>>
为什么有的程序员的代码结构混乱
查看>>
查看数据库
查看>>
SQLite 数据库
查看>>
行业应用
查看>>
工作的常识
查看>>
java里面获取map的key和value的方法
查看>>
积累20180203
查看>>
MySQL里获取当前week、month、quarter的start_date/end_date
查看>>
Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
查看>>