fionajw 发表于 2013-1-19 04:10:56

Shell 学习笔记(二)变量 参数 引用

          
2、字符串替换
      b=${a/23/BB}        #a=234523     b=BB4523
 
3、位置参数
      basename $0      去掉脚本名称的路径名
      [ -n "$1" ]  true:参数存在
      $#: 参数个数
      $*:  单个单元,必须加引号
      $@:每个参数作为一个单元
      set -- "First one" "second" "third:one"  :设置位置参数
     
      args=$#           # 传给脚本的参数个数.
      lastarg=${!args}
 
4、环境变量分隔符
     5、双引号 单引号
      使用双引号除了变量名前缀($)、后引符(`)和转义符(\)外,其余均只解释为字面
 
      在单引号内,除了字符',每个特殊字符都只是字面的意思。单引号(全局引用)比双引号(部分引用)更严格的处理引用部分。
      若想打印 ‘号: echo \'
                              echo 'can' \' 't'         #can ' t
                              echo 'can'\''t'           #can't
 
6、感叹号表历史命令
      在命令行上,把感叹号"!"放在双引号里执行命令会出错(译者注:比如说:echo "hello!"). 因为感叹号被解释成了一个历史命令. 然而在一个脚本文件里,这么写则是正确的,因为在脚本文件里Bash的历史机制被禁用了。
 
7、转义
      \v  :   垂直制表符
      \a  :   蜂鸣声(禁止操作声音)
 
     echo -e “\n”            ==         echo $'\n'
     $'\xxx'  : 转义字符取值     e.g. ABC=$'\101\102\103\010\t'
    
     出乎意料:
     echo \z                     #  z
     echo "\z"                  # \z    
     echo `echo \\z`       # z      
     echo `echo \\\z`      # \z     未转义过的还可加\转义,已转义过的之前\只能输出字面啦
     echo `echo "\z"`      # \z     双引号一加,就绝对化啦
     
     转义\的赋值
     variable=\
     23skidoo
     echo "$variable"        #  23skidoo   这样就能工作,因为\将其后的换行符转义了哦
   
8、EOF
     可随意换行,便于写SQL
     cat <<EOF              
     \\z                     
     EOF
8、内部变量
       $IFS:分隔符,决定Bash在解释字符串时如何识别域, 或者单词边界. 默认为空白(空格, 制表符,和换行符)
       e.g.         output_args(){
                               for arg
                               do echo "$arg _"
                               done
                      }
                      IFS=":,"
                      var="a:b::c"
                      output_args $var         #a _b _ _c _
                      output_args a:b::c       #不行,把此当作一个参数      a:b::c _
                      
       e.g.         IFS='\'
                      var=="'(]\\{}\$\""
                      echo $var         # '(] {}$"     \字符被空白符替换了,为什么?
                      echo "$var"      # '(]\{}$"
     
       $PWD:工作目录(你当前所在的目录)
    $SECONDS :这个脚本已经运行的时间(以秒为单位) 
页: [1]
查看完整版本: Shell 学习笔记(二)变量 参数 引用