【脚本学习】shell脚本入门-符号篇
2017-11-02 11:29
246 查看
原文地址:shell脚本入门符号篇
shell变量不需要进行任何声明,直接定义即可,因为shell变量的值实际上都是字符串(对于没有定义的变量默认是一个空串)。定义的时候shell变量由大写字母加下划线组成,并且定义的时候等号两边不能存在空格,否则会被认为是命令!
shell变量的种类:
环境变量:shell进程的环境变量可以从当前shell进程传给fork出来的子进程。
本地变量:只存在于当前shell进程
利用printenv可以显示当前shell进程的环境变量;利用set命令可以显示当前shell进程中的定义的所有变量(包括环境变量和本地变量)和函数。
一个shell变量定义后仅存在于当前Shell进程,是一个本地变量。用export命令可以把本地变量导出为环境变量。用unset命令可以删除已定义的环境变量或本地变量。
例如:
变量引用:
引用shell变量要用到$符号,加{}可以防止歧义。
例如:
![](https://img-blog.csdn.net/20171102113324786?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3JhY2V5b25ncWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.常见的通配符:
* : 匹配0个或多个任意字符
? : 匹配一个任意字符
[若干字符] : 匹配方括号中任意一个字符的一次出现
2.命令代换:
反引号`` 或者 $()
script.sh :
![](https://img-blog.csdn.net/20171102113524819?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3JhY2V5b25ncWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
shell会先执行反引号或$()中的命令,将结果代换到当前命令行中!
反引号和$()的区别:
反引号本身就对\进行了转义,保留了本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示。
反引号中: \\ = \
$()中:\ = \
注意:反引号是老的用法,
![](http://mathjax.cnblogs.com/2_6_1/fonts/HTML-CSS/TeX/png/Main/Regular/400/0028.png?rev=2.6.1)
![](http://mathjax.cnblogs.com/2_6_1/fonts/HTML-CSS/TeX/png/Main/Regular/400/0029.png?rev=2.6.1)
是新的用法,不管是在学习测试中,还是在实际工作中,()是新的用法,不管是在学习测试中,还是在实际工作中,()的用法都是被推荐的。
算数代换:$(())
例如:将2-1的结果赋给SUB,并显示本地变量SUB
3.单引号和双引号
Shell脚本中的单引号和双引号一样都是字符串的界定符,单引号用于保持引号内所有字符的字面值,而双引号有些情况则特殊。如果字符串中有特殊字符需要处理时就用双引号。
注:单引号标注的字符中不能再出现单引号。
举个栗子:
![](https://img-blog.csdn.net/20171102113602626?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3JhY2V5b25ncWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结一下,反引号和括号一样都是会先执行符号内的操作再将结果替换到当前命令行中,现在一般都是使用括号!符号内出现运算时,需要双层括号,最里层括号做运算,外层括号实现替换到命令行的作用。反引号中的 / 就表示 / 这个字符,可以直接显示,括号中 / 则表示了特殊意义,如果要显示 / 这个字符,需要用 // 表示,这一点反引号与单引号相同。
单引号里的所有符号就只是字面的意思,若显示的话直接显示自身,双引号则会对特殊字符进行转换。
shell变量
shell变量不需要进行任何声明,直接定义即可,因为shell变量的值实际上都是字符串(对于没有定义的变量默认是一个空串)。定义的时候shell变量由大写字母加下划线组成,并且定义的时候等号两边不能存在空格,否则会被认为是命令!shell变量的种类:
环境变量:shell进程的环境变量可以从当前shell进程传给fork出来的子进程。
本地变量:只存在于当前shell进程
利用printenv可以显示当前shell进程的环境变量;利用set命令可以显示当前shell进程中的定义的所有变量(包括环境变量和本地变量)和函数。
一个shell变量定义后仅存在于当前Shell进程,是一个本地变量。用export命令可以把本地变量导出为环境变量。用unset命令可以删除已定义的环境变量或本地变量。
例如:
引用shell变量要用到$符号,加{}可以防止歧义。
例如:
通配符 Globbing、命令代换、单引号、双引号
1.常见的通配符:* : 匹配0个或多个任意字符
? : 匹配一个任意字符
[若干字符] : 匹配方括号中任意一个字符的一次出现
2.命令代换:
反引号`` 或者 $()
script.sh :
shell会先执行反引号或$()中的命令,将结果代换到当前命令行中!
反引号和$()的区别:
反引号本身就对\进行了转义,保留了本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示。
反引号中: \\ = \
$()中:\ = \
注意:反引号是老的用法,
![](http://mathjax.cnblogs.com/2_6_1/fonts/HTML-CSS/TeX/png/Main/Regular/400/0028.png?rev=2.6.1)
![](http://mathjax.cnblogs.com/2_6_1/fonts/HTML-CSS/TeX/png/Main/Regular/400/0029.png?rev=2.6.1)
是新的用法,不管是在学习测试中,还是在实际工作中,()是新的用法,不管是在学习测试中,还是在实际工作中,()的用法都是被推荐的。
算数代换:$(())
例如:将2-1的结果赋给SUB,并显示本地变量SUB
Shell脚本中的单引号和双引号一样都是字符串的界定符,单引号用于保持引号内所有字符的字面值,而双引号有些情况则特殊。如果字符串中有特殊字符需要处理时就用双引号。
注:单引号标注的字符中不能再出现单引号。
举个栗子:
总结一下,反引号和括号一样都是会先执行符号内的操作再将结果替换到当前命令行中,现在一般都是使用括号!符号内出现运算时,需要双层括号,最里层括号做运算,外层括号实现替换到命令行的作用。反引号中的 / 就表示 / 这个字符,可以直接显示,括号中 / 则表示了特殊意义,如果要显示 / 这个字符,需要用 // 表示,这一点反引号与单引号相同。
单引号里的所有符号就只是字面的意思,若显示的话直接显示自身,双引号则会对特殊字符进行转换。
相关文章推荐
- shell脚本入门-符号篇
- Shell脚本学习指南-入门
- Shell脚本编程学习入门 01
- Shell脚本编程学习入门 01
- Shell脚本学习(三):shell 函数和一些常用符号和命令
- Shell脚本编程学习入门 01
- 01- Shell脚本学习--入门
- Shell脚本入门学习笔记
- 【每天一点Linux】shell脚本的学习之一——符号
- Shell脚本学习入门(一)
- 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
- shell脚本 入门 —— 符号篇
- Shell脚本编程学习入门 02 分类: arm-linux-Ubuntu 2013-08-30 17:45 427人阅读 评论(0) 收藏
- [网摘学习]Shell脚本编程学习入门:Shell编程基础
- 【脚本学习】shell脚本入门-eval和crontab
- Shell入门之脚本管理学习笔记
- 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
- Shell脚本编程学习入门 02
- shell脚本学习入门
- shell脚本学习-入门