一, 本地变量
1, 使用场景: 本地变量在用户当前 shell 生存期的脚本中使用
2, 定义赋值的几种方式:
变量名 = 值 #赋值时不加引号
变量名 ='值' #赋值时加单引号
变量名 ="值" #赋值时加双引号
3, 定义变量名以及赋值时的要求
变量名: 一般是字母, 数字, 下划线组成, 可以以字母或者下划线开头, 不能以数字开头, 建议采用驼峰语法来编辑变量名 (即当变量名是多个单词时, 除了第一个单词首字母是小写, 其他单词的首字母都是大写)
赋值: 可以用单引号, 双引号以及不加任何引号, 但是三者的含义是不同的
4, 三种赋值方式的不同之处
无引号 : 赋值时,
如果值中有空格, 则会造成赋值失败
如果值中有命令, 其他变量, 则会先把命令和变量解析后再输出
如果字符串中带有空格等特殊字符, 则会赋值失败
单引号: 赋值时,
所见即所得, 即输出时会将单引号内的所有内容按原样输出, 就是你看到什么就输出什么, 被称为 "强引用"
双引号: 赋值时,
输出双引号内的室友内容
如果值中有命令, 其他变量, 特殊转移符等, 会先把前三者解析出来再输出, 是?? 推荐的用法??, 被称为 "弱引用"
反引号: 顺带说一下, 反引号用法. 一般用于引用命令, 执行的时候命令会被执行, 但是一般不推荐用反引号引用命令的方式, 而是推荐用 $() 这样的方式来引用命令.
5, 变量定义以及赋值经验小结
1) 若变量内容为连续的数字或者字符串, 赋值时, 可不加任何引号, 例如: abc=123
2) 若变量的内容很多时, 且有空格和希望被解析的变量, 就必须使用双引号, 例如: abc="/etc/rc.local $USER"
3) 若希望原样输出变量中的内容时必须采用单引号进行复制, 例如: abc='$USER'
4) 若要引用命令, 则用反引号把赋值的命令反引起来, 但是建议用 $() 的方式, 而不是反引号, 例如: abc=ls abc=$(ls)
5) 使用 "echo $ 变量名" 即可以输出变量的内容, 也可以用 printf 代替 echo 输出更复杂的格式内容
6) 当变量后面连接有其他字符的时候, 必须给变量加上大括号 {}, 例如:${abc}_def
7) 没有特殊要求时, 一律使用双引号
6, 三剑客 (grep/awk/sed) 取用 Shell 变量时的特殊用法
grep: 按前面的正常用法
sed: 按前面的正常用法
awk:?? 不能按前面的正常用法??,awk 取用 shell 变量时的格式例子:
- NB="dabiaoge"
- echo "$NB" | awk '{print $0}'
- echo '$NB' | awk '{print $0}'
- echo $NB | awk '{print $0}'
NB=`pwd` 或者 NB=$(pwd)
- echo "$NB" | awk '{print $0}'
- echo '$NB' | awk '{print $0}'
- echo $NB | awk '{print $0}'
二, 我是大表哥, 我为自己带盐, 以后会不定时更新, 请支持正版, 盗链可耻
我的博客是: http://blog.51cto.com/
各位朋友有什么不懂以及认为有什么错误之处, 请在下方留言, 谢谢!
来源: http://www.bubuko.com/infodetail-2896370.html