美文网首页
【shell编程】变量

【shell编程】变量

作者: 运维开发笔记 | 来源:发表于2023-02-12 17:36 被阅读0次

变量

又分为环境变量和自定义变量

环境变量

使用 env 命令查看

[api@kfxqtyglpt ~]$ env
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=10.190.179.212 60463 50023
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/1
HISTORY_FILE=/var/log/usermonitor/usermonitor.log
JRE_HOME=/home/api/jdk1.7.0_25/jre
USER=api
MAVEN_HOME=/home/api/maven
MAIL=/var/spool/mail/api
PATH=/home/api/jdk1.7.0_25/bin:/home/api/maven/bin:/home/api/maven/bin:/home/api/jdk1.7.0_25/bin:/home/api/jdk1.7.0_25/jre/bin:/usr/local/nginx/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/api/bin
JAVA_HOME=/home/api/jdk1.7.0_25
LANG=zh_CN.UTF-8

环境变量通常用全大写的形式

自定义变量

[api@kfxqtyglpt ~]$ myname=nanhai13

注意

  1. 变量未设定之前是空的
  2. 等号两边不能有空格

查看变量

[api@kfxqtyglpt ~]$ echo $myname
nanhai13
[api@kfxqtyglpt ~]$ echo ${myname}
nanhai13

推荐使用${}方式

特殊情况处理

  1. 数据内容有空格

    用单引号或者双引号括起来

    或者用转移字符\把空格转义了

    [api@kfxqtyglpt ~]$ myname="nanhai 13"
    [api@kfxqtyglpt ~]$ echo ${myname}
    nanhai 13
    [api@kfxqtyglpt ~]$ myname='nanhai 14'
    [api@kfxqtyglpt ~]$ echo ${myname}
    nanhai 14
    [api@kfxqtyglpt ~]$ myname=nanhai\ 15
    [api@kfxqtyglpt ~]$ echo ${myname}
    nanhai 15
    
  2. 数据内容中引用其他变量

    用双引号括起。不能用单引号

    [api@kfxqtyglpt ~]$ hello="hi ${myname}"
    [api@kfxqtyglpt ~]$ echo $hello
    hi nanhai 15
    

    如果用单引号

    [api@kfxqtyglpt ~]$ hello='hi ${myname}'
    [api@kfxqtyglpt ~]$ echo $hello
    hi ${myname}
    

    可以看出单引号和双引号的区别了

  3. 数据内容中执行其他命令

    使用$()可以执行命令

    [api@kfxqtyglpt ~]$ myversion=$(uname -r)
    [api@kfxqtyglpt ~]$ echo $myversion
    2.6.32-431.el6.x86_64
    

查看自定义变量

使用set命令。可以查看所有环境变量和自定义变量

删除自定义变量

unset命令

其他

$本身也是个变量

[api@kfxqtyglpt ~]$ echo $$
74292

$$显示当前shell的pid

?是上一个命令的结果

一般命令执行后都会回传一个执行结果。

执行成功一般回传0,如果执行出错,会回传错误码。

[api@kfxqtyglpt ~]$ echo $?
0
[api@kfxqtyglpt ~]$ name=66 66
-bash: 66: command not found
[api@kfxqtyglpt ~]$ echo $?
127

将自定义变量导出为环境变量

使用export命令,注意没有$符号

[api@kfxqtyglpt ~]$ export myname

使用env查看

[api@kfxqtyglpt ~]$ env
...
myname=nanhai 15
...

我们登入linux,取得一个bash命令窗口,就是开启了一个bash程序,这个bash有自己的pid

在这个shell下执行的所有命令都是这个shell程序的子程序

子程序会继承父程序的环境变量,但是不会继承父程序的自定义变量

[api@kfxqtyglpt ~]$ name=superman
[api@kfxqtyglpt ~]$ echo $name
superman
[api@kfxqtyglpt ~]$ bash    ========>开启一个bash子程序
[api@kfxqtyglpt ~]$ echo $name

[api@kfxqtyglpt ~]$ exit    ========>返回父程序
exit
[api@kfxqtyglpt ~]$ export name      ========>export成环境变量
[api@kfxqtyglpt ~]$ bash
[api@kfxqtyglpt ~]$ echo $name
superman

读取输入值

编写shell脚本时经常会用到需要获取用户输入的功能。这就需要read命令

[api@kfxqtyglpt ~]$ read name
king
[api@kfxqtyglpt ~]$ echo ${name}
king
[api@kfxqtyglpt ~]$ read -p "输入名字:" -t 10 name
输入名字:aaaaa
[api@kfxqtyglpt ~]$ echo $name
aaaaa

read直接加变量名即可

参数-p可以加说明,-t是等待时间

声明变量的类型

默认定义的变量都是字符串类型,所以

[api@kfxqtyglpt ~]$ sum=10+20
[api@kfxqtyglpt ~]$ echo ${sum}
10+20

声明变量类型使用declare命令,参数

-a数组类型

-i整数类型

-x导出为环境变量

-r只读类型

[api@kfxqtyglpt ~]$ unset sum
[api@kfxqtyglpt ~]$ declare -i sum
[api@kfxqtyglpt ~]$ sum=10+20
[api@kfxqtyglpt ~]$ echo $sum
30

数组

直接使用中括号来定义即可,使用时需要用${}

[api@kfxqtyglpt ~]$ arr[0]=aa
[api@kfxqtyglpt ~]$ arr[1]=bb
[api@kfxqtyglpt ~]$ arr[2]=cc
[api@kfxqtyglpt ~]$ echo "${arr[0]},${arr[2]}"
aa,cc

相关文章

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • Shell编程系列(三)-- 运算符

    前言 在上一篇文章Shell编程系列(二)-- Bash 变量中, 我们学习了Shell编程中的变量相关的知识。...

  • Shell 编程的变量

    Shell 编程中,变量一般分为三种: 自定义变量: 仅在当前 Shell 实例中有效,其他 Shell 启动的程...

  • Shell编程--变量

    Shell与其他语言的对比 1. php和java主要实现功能 (Shell,所见即所得。直接能看见结果,编译过程...

  • shell脚本基础

    编写脚本 编程基础 shell脚本 创建shell脚本 变量 运算 测试 配置用户的环境

  • Bash shell

    Shell脚本编程30分钟入门 1. $开头shell变量的含义: $1, $2, $3, ... are the...

  • 2020-05-25 bash脚本编程 一 变量、变量类型等

    一 变量、变量类型等 shell编程 编译器,解释器 编程语言:机器语言(0/1)、汇编语言、高级语言: 静态...

  • linux-bash变量

    shell编程shell主要用来简化管理操作bash变量1.什么是变量变量是计算机内存的单元,其中存放的值可以改变...

  • Linux基础学习七

    一:shell 1.shell:弱类型编程语言 强:变量在使用前必须事先声明,甚至还需初始化 弱:变量在用时声...

  • bash编程-Shell变量

    bash中,所有变量的值默认均为字符串。 1. 变量操作 调用变量 查看变量(所有类型) 删除变量 2. 变量分类...

网友评论

      本文标题:【shell编程】变量

      本文链接:https://www.haomeiwen.com/subject/hvmdkdtx.html