【问题标题】:Cut hex addresses without having them expanded into text剪切十六进制地址而不将它们扩展为文本
【发布时间】:2021-04-30 18:55:22
【问题描述】:

我用这个命令得到一个窗口 id 并将它存储到一个变量中

id=$(xdo id -n "piper" || xdo id -N "Piper")
echo $id
0x04000007 0x04000001

但是,当我尝试使用 cuthead 仅获取第一个地址时,它们会将十六进制值转换为文本。例如:

id=$(id | cut -f1 -d' ')
echo $id
uid=1007(user)

我已经研究了 cut 和 head ,但没有找到任何方法使它们不(扩展?)十六进制值。我想按原样获得第一个值。

【问题讨论】:

    标签: bash cut head


    【解决方案1】:

    id(命令)与${id}(变量引用)不同;并且id 不会返回与xdo ... || xdo ... 相同的东西

    假设变量id有你的十六进制代码,并且所述代码用空格分隔,你可以使用参数扩展来拉出第一个十六进制代码,例如:

    $ echo ${id%% *}
    0x04000007
    
    ## or
    
    $ echo ${id// */}
    0x04000007
    
    ## or
    
    $ echo ${id// *}
    0x04000007
    

    【讨论】:

      【解决方案2】:

      不,这实际上不是这里发生的事情。您实际上只是调用程序id,它会返回您的用户组ID。您需要回显$id 字段。试试:

      id1=$(echo $id | cut -f1 -d' ')
      echo $id1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-08
        • 2014-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-04
        • 2013-11-14
        相关资源
        最近更新 更多