【问题标题】:Split a string variable and use only a section bash拆分字符串变量并仅使用节 bash
【发布时间】:2020-08-12 16:41:09
【问题描述】:

我有一个像下面这样的变量。

1.1.0.1580308800316

有没有办法将 1.1.0 作为单独的变量,将 1580308800316 作为单独的变量?赞var1=1.1.0 and var2=1580308800316

我尝试了以下可以找到的代码行。

echo 1.1.0.1580308800316 | fold -w6

但它并没有给我带来我想要的结果。

``

【问题讨论】:

    标签: bash sed word-wrap cut


    【解决方案1】:

    使用标准 POSIX shell 是可能的:

    #!/usr/bin/env sh
    
    version='1.1.0.1580308800316'
    
    var1="${version%.*}"
    var2="${version##*.}"
    
    printf 'Version: %s\n' "$version"
    printf 'Var1: %s\n' "$var1"
    printf 'Var2: %s\n' "$var2"
    

    输出:

    Version: 1.1.0.1580308800316
    Var1: 1.1.0
    Var2: 1580308800316
    

    【讨论】:

    • 我试过这个方法,这也有效。非常感谢您的帮助:)
    【解决方案2】:

    尽管恕我直言,您可以从文本中创建 2 个元素,并可以保存在数组的 2 个元素中,然后一个接一个地使用该数组项,因为 OP 坚持只有变量,所以您可以使用 cut这个命令。

    first_var=$(echo "1.1.0.1580308800316"  | cut -d'.' -f1-3)
    second_var=$(echo "1.1.0.1580308800316"  | cut -d'.' -f4)
    

    【讨论】:

    • 非常感谢。有效。我很欣赏你的意见。实际上,这是我从 JSON 文件中获取的 docker 图像标签的 docker curl 响应。 $first_var 实际上是一个产品版本,而 $second_var 只是一个时间戳。我想把他们两个分开。以上工作。再来一次。非常感谢。 :)
    猜你喜欢
    • 2018-11-20
    • 2021-09-29
    • 2020-12-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2012-08-17
    • 2016-06-20
    相关资源
    最近更新 更多