shell中命令的执行:$( ) 命令

    编写脚本程序时,你经常需要捕获一条命令的执行结果,并把它用在shell脚本程序中。也就时你想要执行一条命令,并把命令的输出放在一个变量中。

    如果想要把命令的结果放到一个变量中,你可以按通常的方法来给它赋值。

    例如:

                  whoisthere=$(who)

                  echo $(whoisthere)



    1.算数扩展

        $((  ))命令/expr命令

        例如:

                  #!/bin/bash

                 

                  x=0

                  while [ "$x" -ne 10 ];do

                        echo $x

                        x=$(( $x+1 ))        #这与x=$(...)命令不同,$(( ))用于算数替换,而$( )用于命令的执行和获取输出。

                  done

     

                   exit

                 

    2.参数扩展

          为了保护变量名中类似$i部分的扩展,你需要把i放到话括号中,例如:

           #!/bin/bash

           

           for i in 1 2

           do

                   mysecret_program ${i}_tmp   #mysecter_program 是用来处理1_tmp  2_tmp文件的程序

           done

          

           #!/bin/bash

                 for i in 1 2 ; do
                      echo "$i"_tmp      #输出1_tmp 2_tmp 字符串

                      touch ${i}_tmp     #建立 1_tmp 2_tmp 文件,此处用“ ”代替{ }同样可行
                      echo $(who)        #执行 who 命令
                      echo $(who) > ${i}_tmp   #执行who命令 并将结果重定向于 1_tmp 2_tmp 文件,此处用“ ”代替{ }同样可行

                      who>>"$i"_tmp   #
                done

         

      常见的参数扩展方法:

      {param:-default}:如果param为空,就把它设置为default的值

      {#param}:给出param的长度

      {param%word}:从param的尾部开始删除与word匹配的最小部分,然后返回剩余部分

      {param%%word}:从param的尾部开始删除与word匹配的最长部分,然后返回剩余部分

      {param#word}:从param的头部开始删除与word匹配的最小部分,然后返回剩余部分

      {param##word}:从param的头部开始删除与word匹配的最长部分,然后返回剩余部分

      例如:

               unset foo

               echo $(foo:-bar)


               foo=fud

               echo $(foo:-bar)

              

               foo=/usr/bin/x11/startx

               echo $(foo#*/)

               echo $(foo##*/)


               bar=/usr/local/etc/local/networks

               echo $(bar%local*)

               echo $(bar%%local*)















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值