1. shell变量的定义

  1)Shell 支持以下三种定义变量的方式:

variable=value
variable='value'
variable="value"

特点

1. shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号,也可以使用 declare 关键字显式定义变量的类型
2. 赋值号=的周围不能有空格
3. 使用一个定义过的变量,只要在变量名前面加美元符号$,变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
4. 命名规则同其他语言类似
  • 变量名由数字、字母、下划线组成;
  • 必须以字母或者下划线开头;
  • 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。

5. 单引号和双引号的区别

  • 以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况
  • 以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。

2. 变量赋值

variable=`command` #使用反引号` `包裹变量
variable=$(command) #$()符号包裹变量

3. 只读变量

readonly var #关键字readonly

4. 删除变量

unset variable_name #变量被删除后不能再次使用;unset 命令不能删除只读变量。

5. Shell变量的作用域

  1)Shell 变量的作用域可以分为三种:

  • 有的变量可以在当前 Shell 会话中使用,这叫做全局变量(global variable),只要是同一个shell窗口都是生效的,无论几个shell脚本文件。变量默认为全局变量。
  • 有的变量只能在函数内部使用,这叫做局部变量(local variable);使用local关键字。
  • 而有的变量还可以在其它 Shell 中使用,这叫做环境变量(environment variable)。当使用export关键字后 export a ,变量会在子shell中生效,默认不生效

最新文章

  1. 使用 python 管理 mysql 开发工具箱 - 1
  2. Python黑帽编程 3.2 ARP监控
  3. 核心动画 (CAAnimationGroup)
  4. 关于hibernate链接数据源的配置参数详细解释(转)
  5. iOS 学习 - 8 TableViewCell 自适应高度
  6. Weka算法Classifier-tree-J48源代码分析(一个)基本数据结构和算法
  7. [ActionScript 3.0] AS3动画类Tweener中滤镜的运用
  8. UI设计师的 Android 备忘录
  9. NAS4Free 安装配置(二)系统安装
  10. jquery单页网站导航插件One Page Nav
  11. JPA 批注参考
  12. Python 实现的随机森林
  13. Ubuntu16.04 + Zabbix 3.4.7 邮件报警设置
  14. linux 相关( 随时更新)
  15. 源码包安装php7.2
  16. springboot缓存注解——@Cacheable
  17. PyCharmMarkdown插件的方法
  18. dwr出现session error
  19. JS 正则表达式从地址中提取省市县
  20. mysql之workbench如何只导出(insert语句)数据

热门文章

  1. 学习安卓开发[3] - 使用RecyclerView显示列表
  2. redis 五大数据结构__常用命令
  3. PJSUA2开发文档--第十二章 PJSUA2 API 参考手册
  4. 详解MongoDB中的多表关联查询($lookup)
  5. 我现在有个表,里面有100个不同的单词,每个单词对应有大概20个词组,我想通过sql,每个单词随机获取对应的3个词组,请问怎么写可以实现?
  6. C#-this关键字的功能之扩展方法
  7. Nginx+uWSGI启动Django
  8. 解决Win10系统本地主机,网络受限占用CPU过高的问题
  9. c/c++ 多线程 利用条件变量实现线程安全的队列
  10. c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息