Chinaunix首页 | 论坛 | 博客
  • 博客访问: 310475
  • 博文数量: 81
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 847
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-25 22:29
个人简介

执一不失,能君万物http://weidian.com/s/284520723?wfr=c

文章分类

全部博文(81)

文章存档

2016年(11)

2015年(70)

我的朋友

分类: LINUX

2015-07-11 19:04:38

变量和引用

点击(此处)折叠或打开

  1. 一.变量替换和赋值
  2. 定义变量时,变量名不加美元符号($),如:
  3. variableName="value"
  4. 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
  5. 首个字符必须为字母(a-z,A-Z)。
  6. 中间不能有空格,可以使用下划线(_)。
  7. 不能使用标点符号。
  8. 不能使用bash里的关键字(可用help命令查看保留关键字)。
  9. [root@localhost ~]# var1=11
  10. [root@localhost ~]# echo $var1
  11. 11
  12. [root@localhost ~]# echo ${var1}
  13. 11
  14. #2种方式
  15. [root@localhost ~]# var2="Hello World"
  16. [root@localhost ~]# echo ${var2}
  17. Hello World
  18. #带有空格的需要添加引号
  19. [root@localhost ~]#
  20. [root@localhost ~]# unset var1
  21. [root@localhost ~]# unset var2
  22. [root@localhost ~]# echo ${var1}
  23. [root@localhost ~]# echo ${var2}
  24. [root@localhost ~]#
  25. #空白行表示变量的值被清空
  26. 变量赋值的模式
  27. 模式
  28. variable=value //把value赋值给variable
  29. variable+value //对已经赋值的variable,重设其值
  30. variable?value or variable:?value//对未赋值的variable,显示系统错误信息
  31. variable:=alue//对未赋值的variable,将value赋值给它
  32. variable:-value//对未赋值的variable,将value赋值给它,但不会把value存储在variable的地址空间
  33. [root@localhost ~]# var1=black
  34. [root@localhost ~]# echo $var1
  35. black
  36. [root@localhost ~]# echo "The Background is $var1"
  37. The Background is black
  38. [root@localhost ~]# unset var1
  39. [root@localhost ~]# echo "The Background is ${var1:-blue}"
  40. The Background is blue
  41. [root@localhost ~]# echo $var1
  42. [root@localhost ~]# echo "The Background is ${var1:=blue}"
  43. The Background is blue
  44. [root@localhost ~]# echo $var1
  45. blue
  46. [root@localhost ~]# readonly var1
  47. [root@localhost ~]# echo $var1
  48. blue
  49. [root@localhost ~]# var1=orange
  50. -bash: var1: readonly variable
  51. [root@localhost ~]# unset var1
  52. -bash: unset: var1: cannot unset: readonly variable
  53. [root@localhost ~]#
  54. #只读变量不能更改和重置。只能退出shell,让它自动消失了
  55. 二、无类型的shell脚本变量
  56. 默认情况下,shell脚本变量是字符类型的,同时字符型的变量还具有一个整数型,为0;
  57. 数值型的初值为0,字符型的初值为空;
  58. [root@localhost ~]# cat var.sh
  59. #/bin/bash
  60. c=""
  61. echo "c=$c"
  62. let c+=1
  63. echo "c=$c"
  64. echo "e=$e"
  65. let e+=1
  66. echo "e=$e"
  67. exit 0
  68. [root@localhost ~]#
  69. [root@localhost ~]# chmod +x var.sh
  70. [root@localhost ~]# ./var.sh
  71. c=
  72. c=1
  73. e=
  74. e=1
  75. [root@localhost ~]#
  76. 三、环境变量
  77. 1.定义和消除环境变量
  78. 格式
  79. ENVIRON-VARIABLE=value
  80. export ENVIRON-VARIABLE
  81. 在给环境变量赋值后,用export声明下;
  82. env命令查看环境变量
  83. 2.重要的环境变量
  84. ①PWD、OLDPWD
  85. PWD记录当前的目录路径
  86. OLDPWD记录旧的工作目录
  87. [root@localhost home]# pwd
  88. /home
  89. [root@localhost home]# cd /
  90. [root@localhost /]# pwd
  91. /
  92. [root@localhost /]# echo $PWD
  93. /
  94. [root@localhost /]# echo $OLDPWD
  95. /home
  96. [root@localhost /]#
  97. ②PATH
  98. 任何在PATH中的可执行文件都可以在linux系统的任何目录中直接执行
  99. ③HOME
  100. 记录当前用户的主目录
  101. ④SHELL
  102. 保存默认的SHELL,默认为/bin/bash
  103. ⑤USER、UID
  104. USER和UID是保存用户信息的环境变量
  105. ⑥PPID
  106. PPID是创建当前进程的进程号,即当前进程的父进程号;
  107. ⑦PS1\PS2
  108. PS1用于设置一级shell提示符的环境变量,也称为主提示符字符串;
  109. [root@localhost /]# echo $PS1
  110. [\u@\h \W]\$
  111. [root@localhost /]# PS1="[\u@\h\d\s\#]\$"
  112. [root@localhost六 7月 11-bash15]$
  113. PS2
  114. [root@localhost ~]# echo $PS2
  115. >
  116. [root@localhost ~]# PS2="\s \w >"
  117. [root@localhost ~]# $echo
  118. [root@localhost ~]# $echo "1111
  119. -bash ~ >
  120. -bash ~ >
  121. ⑧IFS
  122. 内部字段分隔符(Internal Field Separator, IFS)是shell脚本中的一个重要概念。IFS是存储定界符的环境变量。它是当前shell环境使用的默认定界字符串
  123. 3.几个环境变量配置文件
  124. (1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
  125. (2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
  126. (3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  127. (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
  128. (5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc /profile中的变量,他们是"父子"关系。
  129. (6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
  130. 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
  131. 四、引用
  132. 引用符号、名称以及意义
  133. shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。(注意是所有,只是单引号本身不能够出现在其中)。
  134. 双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
  135. $加变量名可以取变量的值
  136. 反引号仍表示命令替换
  137. \$表示$的字面值
  138. \`表示`的字面值
  139. \"表示"的字面值
  140. \\表示\的字面值
  141. 除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值。
  142. [root@localhost ~]# echo "date"
  143. date
  144. [root@localhost ~]# echo $date
  145. [root@localhost ~]# echo $DATE
  146. [root@localhost ~]# echo $PWD
  147. /root
  148. [root@localhost ~]# echo "$PWD"
  149. /root
  150. [root@localhost ~]# echo "date"
  151. date
  152. [root@localhost ~]# echo "'date'"
  153. 'date'
  154. [root@localhost ~]# echo 'date'
  155. date
  156. [root@localhost ~]# echo `date`
  157. 2015年 07月 11日 星期六 19:01:53 CST
  158. [root@localhost ~]# echo '$PWD'
  159. $PWD
  160. [root@localhost ~]# echo "$PWD"
  161. /root
  162. [root@localhost ~]# echo `$PWD`
  163. -bash: /root: is a directory
  164. [root@localhost ~]#

阅读(1567) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~