032011
 

第三部分 登录环境

十三、基本登录环境

用户和登录信息保存在/etc/passwd文件中,现代的Unix系统,密码常以MD5形式储存在/etc/shadow中。
    /etc/passwd的格式
    登录名 密码 用户id 组id   用户全名  主目录      使用的Shell
    sean  :x  :1000  :1000 :seanluo :/home/sean :/bin/bash

配置文件 /etc/profile 保存的是全局或局部环境变量、PATH信息、终端设置、安全命令如umask和其他信息。

配置文件 $HOME/.profile 保存的是用户配置信息,PS1和PS2可以设置提示符的信息。

stty用于设置终端特性,使用stty -a可以查看当前终端配置。

十四、环境信息和Shell变量

定义变量
    最基础的可以使用 VAR_NAME="value" 的形式,注意等号两端不能有空格,否则将被shell理解为命令。
    扩展的检测和定义变量的方式有:
         ${var_name:=value}    如果未设置变量,则设置其值为value。
                 注意与下面var_name:-value的区别。
         
${var_name:+value}    如果设置了变量,则重设其值。如没有设置,则返回空串。
         ${var_name:-value}    如果未设置变量,则在表达式中出现变量时使用value,
              但是并不改变var_name的未设置的状况。注意,仅仅是临时使用value这个值而已。 
         ${var_name:?info}    如果未设置变量,则显示用户自定义的出错信息。

显示变量
    使用 echo $VAR_NAME 即可。使用 echo ${VAR1} ${VAR2} 可以合并显示两个变量的值。

清除变量
    使用 unset $VAR_NAME。变量变成未定义模式。

将变量设置为只读
    使用 readonly $VAR_NAME

上面提到的都是本地变量,要将本地变量导出为全局变量,使用export $VAR_NAME即可。
    变量被导出以后,即可在子进程中使用了。

位置变量参数
特定变量参数
    变量位置参数用于脚本从其他地方接收参数,比如从shell传来到脚本中的参数。
    $0 当前脚本名称
    $1 参数1
    …
    $9 一般来说最多九个变量位置

    $# 参数个数,相当于argc
    $* 参数列表,相当于argv,即arg1 arg2…
    $@ 引号引起来的参数列表,相当于"arg1" "arg2"…
    $$ 当前脚本进程号
    $! 后台运行的最后一个进程号
    $- shell中的变量状态,与set命令相同
    $? 显示最后命令的退出状态。非常有用。如果未出错则值为0,出错则为其他非零值。

十五、引号

双引号
    可以引用除了 $(美元符) `(反引号) \(反斜线)之外的任何字符。

单引号
    与双引号类似,不同的是shell会忽略其中的一切引用值。比如上面的三个符号。

反引号
    反引号中的串将作为一个命令执行。使用实例:
        $ mydate=`date %A" the "%e" of "%B" "%Y`
        $ echo mydate
        Sunday the 6 fo May 1999

        $ echo "this is my date `date`"

反斜杠
    使用转义字符,屏蔽字符的特殊含义。


  2 Responses to “Unix Shell 编程 入门篇4”

 Leave a Reply

(必须填写)

(必须填写,邮件地址不会被泄露)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>