根据变量类型区分,语言可以分为4种:
- 静态类型语言:一种在编译期间就确定的数据类型的语言:JAVA 和 C 属于静态类型语言
- 动态类型语言:一种在运行期间才能确定的数据类型的语言:Python 和 VBScript 属于动态的类型的语言,他们只有在第一次赋值的时候才能确定类型
- 强类型语言 :一种总是强制类型的语言:JAVA和Python 是强制类型定义的。
- 弱类型语言 :一种可以被忽略的语言,与强类型语言相反:VBScript 是弱类型语言
Linux Shell 语言是一种动态类型语言和弱类型语言,shell编程中变量不分类型,但是依赖于具体上下文
shell中有3中变量:用户变量、位置变量和环境变量。
- 用户变量:用户在shell变成中定义的变量,分为全局变量和局部变量。默认定义的是全局的变量,如果要定义局部变量,使用关键字local 。 eg:varname=value 注:varname 与 = 之间不能有空格。
- shell 中的特殊符号:
- ~:主目录,相当于$HOME
- `:命令替换
- #:shell脚本中的注释
- $:变量表达式符号
- &:后台作业,将此符号置于命令末端,则让命令于后台运行
- *:字符串的通配符
- (:启动子shell
- ):停止子shell
- \: 转义一下字符
- |:管道
- [:开始字符集通配符号
- ]:结束字符集通配符号
- {:开始命令块
- }:结束命令块
- ;:shell命令分隔符
- ‘:强引用
- “:弱引用
- <:输入重定向
- >:输出重定向
- /:路径名目录分割符
- ?:单个任意字符
- !:管道行逻辑NOT
- 强引用和弱引用:弱引用中变量被替换,强引用中变量没有被替换。
- varname=cllir
- "My name is $varname"
- My name is cllir
- gaoyi@gaoyi-Vostro-1014:~/gaoyi/language/JIAOBEN_shell$ echo 'My name is $varname'
- My name is $varname
- 变量语法的真面目:$varname <---------> ${varname},对于前9个是等价的,对于第10个所使用的语法是:${10}
- 字符串操作: 大括号操作符允许我们使用shell操作更多的功能。<确保变量存在并有值>、<设置变量的默认值>、<捕获未设置变量而导致的错误>、<删除匹配模式的变量的值部分内容>
- ${varname:-word}:如果varname存在且非null,则返回varname的值,否则返回word
- 用途:如果变量未定义返回默认值
- ${varname:=word]:如果varname存在且非null,则返回varname的值,否则将其设置为word
- 用途:如果变量未定义,变量设置为默认值
- ${varname:?message}:如果varname存在且非null,则返回varname的值,否则打印message,并推出当前脚本,如果省略message的话,shell返回parameter null or not set
- 用途:用于捕捉由于变量未定义而导致的错误
- ${varname:+word}:如果varname存在且非null,则返回word,否则返回null
- 用途:用于测试变量是否存在
- ${varname#pattern} :如果模式匹配变量取值的开头处,则删除匹配的最短部分
- ${varname##pattern} :如果模式匹配变量取值的开头处,则删除匹配的最长部分
- ${varname%pattern}:如果模式匹配变量取值的结尾处,则删除匹配的最短部分
- ${varname%%pattern} 如果模式匹配变量取值的结尾处,则删除匹配的最短部分
- ${varname/pattern/string}:将varname中匹配模式的第一次最长部分替换成为string
- ${varname/pattern/string}:将varname中匹配模式的最长部分全部替换成为string
- 命令替换:语法 `command`
- 位置变量:也称为系统变量或者位置参数,是shell传递给脚本的参数,同时也表示在shell函数内部函数参数。它们的名称是以数字进行命名的,其中:$n 表示第n个参数的值、$#表示的是参数的个数、$?表示程序返回值
- 环境变量:在通常情况下每个进程都有自己的环境,该环境用一组变量进行表示。如果脚本要设置一个环境变量,则要使用export [-fnp] [变量名称] =[变量设置的值]
- -f :代表[变量名称]中为函数数名称
- -n:删除制定的变量,其实不会删除,只是不会输出到后续指令的执行环境中。
- -p:列出所有的shell赋予程序的环境变量
阅读(438) | 评论(0) | 转发(0) |