点击返回 自学Linux命令行与Shell脚本之路

11.3-使用变量

Shell脚本的执行通常可以采用以下几种方式:
    1):bash script-name或sh script-name(推荐使用)
    2):path/script-name 或./script-name(当前路径下执行脚本)
    3):source script-name或 . script-name #→注意”.”点号。
    4):sh<script-name或cat scripts-name|sh(同样适合bash)

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

           your_name="runoob.com"

变量名的命名须遵循如下规则

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线(_)
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)
  • 变量名和等号之间不能有空格
  • 如果一行只有一条命令,则每一行不用以分号结尾,每一条命令以换行分隔
    如果一行有多条命令,则每一条命令以分号分隔,但建议每行只有一条命令

1.普通变量:
1.1 环境变量:变量必须是大写

  • 配置永久性的环境变量,全局变量的配置文件:/etc/profile 、/etc/bashrc 基本上使用 /etc/profile
  • 配置用户的环境变量的配置文件,分别是:用户的主目录下的隐藏文件:~/.bash_profile 、 ~/.bash_bashrc
  • 临时设置 # export ZSY=1
  • 设置所有用户生效的目录 :/etc/profile.d/ :目录下必须是脚本否则无法使用
  • 如果写一个JAVA的脚本,要把JAVA环境变量放入脚本内,特别是定时任务执行的时候
  • 显示环境变量:
    # env //* 显示的环境变量
    # set //* 显示的环境变量更多
  • 取消环境变量
    # unset <环境变量名> //* 临时取消变量
       进入文件删除变量

1.2 环境变量的意义:

  • UID :当前用户的UID
  • USER :当前登录的用户
  • HOME :当前的用户主目录
  • _= :上一条命令的最后一个参数
  • BASH :调用实例时使用的全路径
  • PS1 :当前的终端
  • PATH :命令所在路径

1.3 局部变量:

  • 一般连续的字符串,数字,路径等可以不加任何引号,不过无引号的情况最好用双引号替代之。
  • 如果变量中使用其他变量时,则不可以使用单引号否则无法使用:如下:

  • 如果变量中有空格的话,就必须使用双引号否则无法输出:如下:

1.4 引号的意义

  • 无引号:把内容输出出来,会将未含有空格的字符串视为一个整体输出; 如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来,如果字符串中有空格等特殊字符则则不能完整输出,需要加双引号,一般连续的字符串,数字,路径等可以不加任何引号, 不过无引号的情况最好用双引号替代之。
  • 单引号:可以说是所见即所得:即将单引号内的所有内容都原样输出,或者描述为里面看到的是什么就会输出什么
  • 双引号:把双引号内的所有内容都输出出来;如果有命令(要在反引号中的)、变量、特殊转义符解析出结果然后子在输出最终内容来
  • 反引号:一般用于执行命令,执行的时候命令会执行,同理可以使用 a=$(ls):结果相同 (注意反引号是键盘~下面的`)

1.5 变量定义小结:
普通变量:
    a=1 连续的数字字符串
    a="/etc/rc.local $USER" 解析结果后输出
    a='$USER' 原样输出
命令内容定义:
    a=`ls` 反引号 //* 将反引号中字符当做命令输出 
    a=$(ls)

2. 特殊变量:
2.1 位置变量

  • $n 获取当前执行的shell脚本的第n个参数值(参数值默认以空格区分,如果参数加了双引号,则将双引号的整个作为一个参数, 不管其中是否有空格),n=1..9 ,当 n 为0时表示脚本的文件名,如果n大于9,用大括号括起来${10},参数以空格隔开。
  • $0 获取当前脚本本身的名字
  • $1 获取当前传递给该shell脚本的第一个参数
  • $2 获取当前传递给该shell脚本的第二个参数
  • $# 获取当前传给脚本的参数个数
  • $$ 获取当前脚本运行的当前进程 PID 号
  • $@ 获取当前传给脚本的所有参数的列表
  • $* 获取当前以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
  • $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

例1:

例2:

例3:

自学Linux Shell11.3-使用变量的更多相关文章

  1. 自学Linux Shell6.1-环境变量概念

    点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...

  2. 自学Linux Shell11.1-shell概述

    点击返回 自学Linux命令行与Shell脚本之路 11.1-shell概述 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计 ...

  3. 自学Linux Shell11.2-echo命令

    点击返回 自学Linux命令行与Shell脚本之路 11.2-echo命令 echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用. 语 法:echo [-n][字符串]或 echo [- ...

  4. 自学Linux Shell11.5-执行数字运算

    点击返回 自学Linux命令行与Shell脚本之路 11.5-执行数字运算 1. Shell基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符 ...

  5. 自学Linux Shell11.6-退出shell

    点击返回 自学Linux命令行与Shell脚本之路 11.6-退出shell shell运行的每一个命令都是使用 退出状态码 告诉shell它已经运行完毕.退出状态码是一个0~255的整数值,在命令结 ...

  6. 自学Linux Shell11.4-重定向输入输出

    点击返回 自学Linux命令行与Shell脚本之路 11.4-重定向输入输出 Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输 ...

  7. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  8. 自学Linux Shell6.2-用户自定义环境变量

    点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...

  9. 自学Linux Shell6.3-系统环境变量持久化

    点击返回 自学Linux命令行与Shell脚本之路 6.3-系统环境变量持久化 在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件:b ...

随机推荐

  1. 解决微软surface pro在某些情况下wifi转输速度过慢的问题 - z

    我是新款i7 surface.昨天到的货,狗东. 在公司使用的时候网络很正常,但回到家里之后就特别卡.5G频段也特别卡,基本处于无法观看视频的地步.台式电脑(我台式用的无线网卡)和手机都没问题. 于是 ...

  2. EF性能优化-有人说EF性能低,我想说:EF确实不如ADO.NET

    十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转 ...

  3. [UWP 自定义控件]了解模板化控件(5.1):TemplatePart vs. VisualState

    1. TemplatePart vs. VisualState 在前面两篇文章中分别使用了TemplatePart及VisualState的方式实现了相同的功能,其中明显VisualState的方式更 ...

  4. spring cloud服务提供与调用示例

    本文创建方式采用intellij IDEA  创建项目 1.创建基于Eureka的注册中心. 在打开项目中右键,选择new 选择moudle 然后下一步 输入要创建的项目的信息 选择web下面的web ...

  5. 开启C语言的学习之门

    本人是一枚工业界的码农,为了职业道路越来越宽广决定向上位机方面进军,C语言曾经在大学里面学过点皮毛但是离应用远远不够,尽量每天在工作之余更新自己学习的进度,同时也希望有大神能给予在编程道路上的指导,话 ...

  6. json中获取key值

    <script type="text/javascript"> getJson('age'); function getJson(key){ var jsonObj={ ...

  7. MongoDB集群运维笔记

    前面的文章介绍了MongoDB副本集和分片集群的做法,下面对MongoDB集群的日常维护操作进行小总结: MongDB副本集故障转移功能得益于它的选举机制.选举机制采用了Bully算法,可以很方便从分 ...

  8. 分布式监控系统Zabbix-3.0.3-完整安装记录(0)

    一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...

  9. linux-文件数据操作awk命令

    最后一列是:交互外壳 单引号里的内容不会被bash扩展 cut 同样可以做到 "\t" 制表符 cut 和 sed 结合同样可以实现 扩展:匿名方法可以有多个,and方法只能有一个 ...

  10. 多校寒训TaoTao要吃鸡dp

    题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包 之后可以多携带h(h为0代表没有装备背包)重量 ...