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

本文介绍了 Bash Shell 中的实用技巧,包括字符串替换、位置参数处理、环境变量使用、特殊字符转义等,帮助读者更好地掌握 Bash 脚本编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          

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 :这个脚本已经运行的时间(以秒为单位)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值