变量和运算符--shell编程笔记2

 

本地变量 环境变量 变量替换 位置变量 标准shell变量 特殊变量 影响变量的命令 引号 运算符 表达式替换 运算符的优先级
1、本地变量:本地变量在用户现在的shell生命期的脚本中使用
          Variable-name=value
          Set显示本地所有的变量
          Readonly variable-name   把变量改为只读的
例如:#LOCALTEST=“test” //定义变量
      #echo ${LOCALTEST} //大括号可以不要
      test
      #readonly LOCALTEST //变为只读的
      # LOCALTEST=“test4” //然后给LOCALTEST变量再赋值,会提示以下信息
      bash:LOCALTEST:readonly variable
      #readonly   //查看本地的所有只读变量,也可以加上-p参数查看
2、环境变量:环境变量用于所有用户进程(经常成为子进程);登录进程成为父进程。Shell中执行的用户进程均成为子进程。不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器、脚本和应用。
          $HOME/.bash_profile(/etc/profile)
          export    //设置环境变量
          env      //查看环境变量,也可以直接用export来查看
例如:#export CHINA=”redhat” //定义环境变量CHINA
      #env   //查看上面定义的环境变量
      #readonly CHINA   //也可以设置为只读的
3、变量替换:用变量的值替换它的名字
             echo
             在变量名前加$,使用echo命令可以显示单个变量取值
例如:#testvar=”this is a test” //定义testvar变量
      #echo ${testvar}       //显示变量,大括号可以不要
      This is a test
变量替换的方式:

${variable name}
显示实际值到variable name
${variable name:+value}
如果设置了variable name,则显示其值value,否则为空。
${variable name:?value}
如果未设置variable name,显示用户定义错误信息value
${variable name:-value}
如果未设置variable name,则显示其值value
${variable name:=value}
如果未设置variable name,设置其值,并显示

4、变量清楚
           unset     unset variable-name
例如:#testvar=”this is a test”
      #echo ${testvar}
      This is a test
      #unset testvar    //清楚变量
      #echo ${testvar} //此时是不会显示任何信息的
      #readonly testvar2   //把testvar2改为只读的
      #unset testvar2      //此时是删除不了的,会返回错误信息
      bash :unset:testvar2:cannot unset:readonly variable
5、位置变量:运行的程序后面要带一些参数,这些参数就是程序当中要用到的用位置标示的,这样的变量我们称为位置变量。在shell中允许的位置变量有十个:
            $0,$1,$2………$9 //超过十个的话要用其它方式在程序中读出来,然后使用它,这些位置变量的表示为:假设$1的参数为A,$2的参数为B等等。

$0
$1
$2
$3
$4
$5
$6
$7
$8
$9
脚本名字
A
B
C
D
E
F
 
 
 

            向脚本中使用位置参数
            向系统命令传递参数
6、标准变量:bash默认建立了一些标准环境变量,可以在shell中自动解析,也可以在/etc/profile中定义。
            EXINIT //初始化定义vi的一些设置参数
            HOME   //主目录 #echo $HOME
            IFS      //字段、域之间的分隔,如空格,冒号之类的
            LOGNAME //登录名
            MAIL    //当前的用户的存储邮箱
            MAILCHECK //检查是否有新的邮件
            MAILPATH //多个邮箱的时候的路径
            TERM      //终端的类型vt100
            PATH       //可执行的文件的寻找路径
            TZ          //表示时区
            PS1         //终端的提示符:[root@server root]#
            PS 2         //要运行多行命令的时候的“>”符号
            PWD        // 表示当前的目录是什么
            SHELL      //当前运行的shell是哪一个shell,如/bin/bash
            MANPATH   //帮助文档存放的路径
            TERMINFO //TERM表示的终端类型到底是哪个文件的信息
7、特殊变量
           $# //传递到脚本的参数个数
           $* //以一个字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超过9个
           $$ //脚本运行的当前进程ID号
           $! //后台运行的最后一个进程的进程ID号
           $@ //使用时加引号,并在引号中返回每个参数的列表
           $- //显示shell使用的当前选项,与set命令功能相同
           $? //显示最后命令的退出状态,0表示没有错误,其他任何值都表明有错误
8、影响变量的命令
           declare
             --设置或显示变量
             -- -f只显示函数名
             -- -r 创建只读变量(delare和typeset)
               -- -x创建转出变量
               -- -i 创建整数变量
               --使用+替代-,可以颠倒选项的含义
            export
               --用于创建传给子shell的变量
               -- --表明选项结束,所有后续参数都是实参
               -- -f表明在“名-值”对中的名字是函数名
               -- -n把全局变量转换成局部变量。换句话说,命令的变量不再传给shell
               -- -p显示全局变量列表
            readonly
               --用于显示或设置只读变量
               -- --表明选项结束
               -- -f创建只读变量
            set 设置或重设各种shell
            shift[n] 用于移动位置变量,调整位置变量,使$3的值赋予$2,$2的值赋予$1。
            typeset 用于显示或者设置变量,是declare的同义词
            unset 用于取消变量的定义
n       --表明选项结束
n        -f删除只读变量,但不能从shell环境中删除指定的变量和函数。如PATH,PS1,PS2,PPID,UID,EUID等的设置。
9、引号:引号的必要性,双引号,单引号,反引号,反斜杠
   引号的必要性:变量和替换操作,在脚本中执行变量替换时最容易犯得一个错误就是引用错误。
   #echo ert * 
   #echo “ert *” //比较一下不同
10、运算符
运算符是对计算机发的指令
运算对象
 --数字、字符(字面值)
 --变量
 --表达式
表达式:运算符和运算对象的组合体

你可能感兴趣的:(用户,职场,表达式,优先级,休闲)