Chinaunix首页 | 论坛 | 博客
  • 博客访问: 679421
  • 博文数量: 125
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 962
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-14 10:20
个人简介

我是一只小白兔~

文章分类

全部博文(125)

文章存档

2017年(16)

2016年(108)

2014年(1)

我的朋友

分类: Python/Ruby

2016-12-27 10:32:30

原文地址:SHELL 编程的基本元素 作者:glinuxi

根据变量类型区分,语言可以分为4种:
  • 静态类型语言:一种在编译期间就确定的数据类型的语言:JAVA 和 C 属于静态类型语言
  • 动态类型语言:一种在运行期间才能确定的数据类型的语言:Python 和 VBScript 属于动态的类型的语言,他们只有在第一次赋值的时候才能确定类型
  • 强类型语言   :一种总是强制类型的语言:JAVA和Python 是强制类型定义的。
  • 弱类型语言   :一种可以被忽略的语言,与强类型语言相反:VBScript 是弱类型语言

     Linux Shell 语言是一种动态类型语言和弱类型语言,shell编程中变量不分类型,但是依赖于具体上下文   

 shell中有3中变量:用户变量、位置变量和环境变量。

  • 用户变量:用户在shell变成中定义的变量,分为全局变量和局部变量。默认定义的是全局的变量,如果要定义局部变量,使用关键字local   。 eg:varname=value 注:varname= 之间不能有空格。
    1. shell 中的特殊符号:

      shell 中的特殊符号

      1. ~:主目录,相当于$HOME
      2. `:命令替换
      3. #:shell脚本中的注释
      4. $:变量表达式符号
      5. &:后台作业,将此符号置于命令末端,则让命令于后台运行
      6. *:字符串的通配符
      7. (:启动子shell
      8. ):停止子shell
      9. \: 转义一下字符
      10. |:管道
      11. [:开始字符集通配符号
      12. ]:结束字符集通配符号
      13. {:开始命令块
      14. }:结束命令块
      15. ;:shell命令分隔符
      16. ‘:强引用
      17. “:弱引用
      18. <:输入重定向
      19. >:输出重定向
      20. /:路径名目录分割符
      21. ?:单个任意字符
      22. !:管道行逻辑NOT
    2. 强引用和弱引用:弱引用中变量被替换,强引用中变量没有被替换。

      强引用和弱引用的例子

      1. varname=cllir
      2.      "My name is $varname"
      3.     My name is cllir
      4.     gaoyi@gaoyi-Vostro-1014:~/gaoyi/language/JIAOBEN_shell$ echo 'My name is $varname'
      5.     My name is $varname
    3. 变量语法的真面目:$varname <---------> ${varname},对于前9个是等价的,对于第10个所使用的语法是:${10}
    4. 字符串操作: 大括号操作符允许我们使用shell操作更多的功能。<确保变量存在并有值>、<设置变量的默认值>、<捕获未设置变量而导致的错误>、<删除匹配模式的变量的值部分内容>

      替换运算符

      1. ${varname:-word}:如果varname存在且非null,则返回varname的值,否则返回word
      2.                      用途:如果变量未定义返回默认值
      3.     ${varname:=word]:如果varname存在且非null,则返回varname的值,否则将其设置为word
      4.                      用途:如果变量未定义,变量设置为默认值
      5.     ${varname:?message}:如果varname存在且非null,则返回varname的值,否则打印message,并推出当前脚本,如果省略message的话,shell返回parameter null or not set
      6.                       用途:用于捕捉由于变量未定义而导致的错误
      7.     ${varname:+word}:如果varname存在且非null,则返回word,否则返回null
      8.                       用途:用于测试变量是否存在

      模式匹配运算符

      1. ${varname#pattern} :如果模式匹配变量取值的开头处,则删除匹配的最短部分
      2. ${varname##pattern} :如果模式匹配变量取值的开头处,则删除匹配的最长部分
      3. ${varname%pattern}:如果模式匹配变量取值的结尾处,则删除匹配的最短部分
      4. ${varname%%pattern} 如果模式匹配变量取值的结尾处,则删除匹配的最短部分
      5. ${varname/pattern/string}:将varname中匹配模式的第一次最长部分替换成为string
      6. ${varname/pattern/string}:将varname中匹配模式的最长部分全部替换成为string
    5. 命令替换:语法 `command`
  • 位置变量:也称为系统变量或者位置参数,是shell传递给脚本的参数,同时也表示在shell函数内部函数参数。它们的名称是以数字进行命名的,其中:$n 表示第n个参数的值、$#表示的是参数的个数、$?表示程序返回值
  • 环境变量:在通常情况下每个进程都有自己的环境,该环境用一组变量进行表示。如果脚本要设置一个环境变量,则要使用export [-fnp]  [变量名称] =[变量设置的值]
  1. -f :代表[变量名称]中为函数数名称
  2. -n:删除制定的变量,其实不会删除,只是不会输出到后续指令的执行环境中。
  3. -p:列出所有的shell赋予程序的环境变量
阅读(1657) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~