Chinaunix首页 | 论坛 | 博客

rgy

  • 博客访问: 411713
  • 博文数量: 179
  • 博客积分: 2580
  • 博客等级: 少校
  • 技术积分: 1890
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-19 08:45
文章分类

全部博文(179)

文章存档

2012年(7)

2011年(43)

2010年(60)

2009年(69)

我的朋友

分类:

2009-05-01 21:16:19

                 环境变量
   1 环境变量用于所有用户进程(经常称为子进程)登录进程称为父进程。Shell中执行的用户进程均为子进程。不像 
       本了变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器,脚本和应用。
    $HOME/.bash_profile(/etc/profile)
    export 显示环境变量
    env    显示环境变量
    export text="变量"  (设置环境变量)
   2.1.3
         变量的值替换它的名字。
    
  用变量的值替换它的名字
 echo
    在变量名前加$,使用echo命令可以显示单个变量取值。
  例:
  test="this is test"
  echo $test
          this is test
        ${varialbe}   显示实际值到variable
 ${variable:+value}    如果设置了vaiable 则显示其值value,否则为空
 ${variable:?value} 如果未设置vaiable 显示用户定义错误信息vales
 ${variable:-value}  如果未设置vaiable则显示其值value
  ${variable:=varlue} 如果未设置vaiable,设置其值,并显示
  清除变量名
 unset
  例: test="aaa"
 unset test
   向系统传递参数
 例:
 vi find.sh
        添加内容:
 #!/bin/bash
 find /home/ -name $1 -print
 执行:
 ./find.sh aa.txt
     2.1.6标准变量
 bash 默认建立一些标准环境变量,可在
 /etc/profiles中定义。
 .EXINIT
 .HOME
 .IFS
 .LOGNAME
 .MAIL
 .MAILCHECK
 .MAILPATH
 .TERM   //进去后终端的类型
 .PATH   //可执行文件找的路径
 .TZ    //表示时区
 .PS1    //表示登系统的提示符
      .MANPATH  //MAN文档存放
 .TERMINFO //TERM的信息
  2.17 特殊变量
 $# (传递到脚本的参数列表)
        $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,  
   此选项参数可超过9个
 $$ 脚本运行的当前进程ID号
 $! 后台运行的最后一个进程的进程ID号
 $@  与$#相同,但是使用时加引号,并在引号中返回每个参数
 $- 显示SHELL使用的当前选项,与set命令功能相同
 $? 显示最后命令的退出状态。0表示没有错误,期它任何值表明有错           误)
  2.1.8 影响变量的命令
 .declare
 -设置或显示变量
 - -f只显示函数名
 - -r 创建只读变量(declare 和 typeset )
 - -i 创建转出变量
 -  使用+替代-,可以颠倒选项的含义
        .export
      -用于创建传给予shell的变量
 - --表明选项结束,所有后续参数都是实参
   - -f 表明在“名一值”对中的名字是函数名。
 - -n 把全局变量转换成局部变量。
  换句话说,命令的变量不再传给shell
 - -p显示全局变量列表
     .readonly 
 -用于显示或设置只读变量
 - -f 创建只读变量
 .set
 - 设置或重设各种shell
        .shift [n]
       -用于移动位置变量,调整位置变量,使$3 的值赋予$2,$2的值赋于           $1
 .typeset
 - 用于显示或设置变量
 - 是declare的同义词
 .unset
 -用于取消变量的定义
 - --表明项选结束
 - -f 删除只读变量,但不能取消从shell环境中删除指定的变量和函数。如PATH , PS1,PS2,PPID,UID,EUID等的设置
  2.2 引号
        双引号:
     使用双引号可引用除字符$L' \外的任意字符串.
   echo -e "ert , *shell '\n* china'echo itlab'"
 
 单引号:
  单引号与双引号类似,不同的是SHELL会忽略任何引用值,换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
        echo 'ert,$SHELL* china'echo italb''
 
        反引号:
  反引号用于设置系统命令的输出到变量。shell将反引号的内容作为一个系统命令,并执行其内容
    echo "china `echo itable`"
      结果: itable
 
 反斜杠:
  如果一个字符有特殊含义,反斜线防止shell误解其含义即屏蔽其特殊含义。
   下述字符包含有特殊意义: & * + ^ $ ` " | ?
          例: echo \*
          结果:
 

     2.2  运算符
 .运算符是对计算机发的指令.
  运算对象
 -数字,字符(字面值)
 -变量
 -表达式
        .表达式:运算符和运算对象的组全体。
         运算符类型
 .按位运算
 ~,<<,>>,$,|,^
 .$[]表示形式告诉SHELL对方括号中的表达式求值
 - $[2+8]
   例:
   #!/bin/bash
          #$[]表示形式举例
  echo $[2+8]
 ~ 反运算
 .op1< .op1>>op2 与上相反
 .op1&op2 与比较运算符,op1和op2对应位,对于每个二进位来说,如果二者该位都是1则结果位1,否则结果位为0,
 .op1~op2 异或运算,比较op1和op2 的对应位,对于每个二进制位来说,如果二者该位互补则结果为1;否则,结果为0.
 op1| op2 或运算比较op1和op2的对应位,对于每个二进位来说,如果二者该位有一个是1或都是1,则结果位为1否则结果为0
  逻辑运算符
 &&  与运算符
 || 或运算
 >,==,<,!=    大于,等于,小于,不等行
 
       3.11    echo
    echo 命令可以显示文本行或变量,或者把字符串输入到文件
           echo [option]string
    - -e 解析转义字符
  - -n不换行,linux系统默认回车换行
  - -转义符(\c,\f,\t,\n)
   \c:回车不换行
   \f:竟止 
   \t:跳过相当于table键
   \n:回车换行
  3.2.1 read
  read 语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。
  .read varible1 varible2 ...
   -如果只指定一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一文件结束等或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符.
    3.3.1  cat
     cat 是一个简单而通用的命令,可以有它来显示文件内容,创建文件,还可以用它来显示控制字符。
  cat [options] filename1...filename2..
  -v 显示控制字符
  -使用cat命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或把cat命令的输出通过管道传递到另外一个具有分页功能的命令(more,less)中
 -man cat 
               3.5 tee
 tee 命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
 tree
 -如果希望在看到输出的同时,也将其存入一个文件挪用么这个命令合适不过了  
 
 

       sort 排序
          例:
            cat /etc/passwd | sort | awk '{print$1}'
       这样就可以查看第一列的用户名了
 
       结合使用标准输出和标准错误
   
      cat aa.txt  bb.txt >cc.txt 2>error.txt
       意思是将aa.txt 和bb.txt 内容合并放到cc.txt 如果出错就将错误码信息发到error.txt中

        合并标准输出和标准错误
       合并标准输出和标准错误的时候,切记shell是从左至右分析相应的命令
   grep "standard" standard.txt>grep.out 2>&1  &1表示输出到屏幕

         exec 命令可以用来替代当前shell;换句话说,并没有启动shell使用这个一命令时任何现有环境都将会被清除,并重新启动一个shell。
 exec command
        其中的command通常是一个shell脚本。
     对文件描述符进行操作的时候(也只有在这时),它不会覆盖你的当前的 shell   
   #!/bin/bash
  #file_desc
  exec 3<&0 0  read line1 
  read line2  
  read line3 
  exec $line1 
  exec $line2 
  exec $line3
 
 
 
 
阅读(651) | 评论(0) | 转发(0) |
0

上一篇:awk 使用

下一篇:nohup使用说明

给主人留下些什么吧!~~