将字符串分成多个部分并进行验证

时间:2019-06-18 13:07:30

标签: shell

我正在写一个shell脚本,我有一个字符串:

2 00:03 2 01:03 2 02:03 2 03:03 2 04:03 2 05:03 2 06:03 2 07:03 2 08:03 2 09:03 2 10:03 2 11:03 2 12:03 2 23:03

前导2是其后时间戳的计数。现在,我必须验证每个时间戳记是否准确计数了两次。

最后,我希望结果是对还是错。

找不到自己的解决方案来分离字符串或进行任何检查。

1 个答案:

答案 0 :(得分:1)

特定于bash的解决方案:

validate () ( # executing function in a subshell
    set -f
    set -- $1
    local -i n=$1
    shift 2
    while (( $# > 0 )); do 
        (( $1 == n )) || return 1
        shift 2
    done
)

然后,我们可以做

$ s="2 00:03 2 01:03 2 02:03 2 03:03 2 04:03 2 05:03 2 06:03 2 07:03 2 08:03 2 09:03 2 10:03 2 11:03 2 12:03 2 23:03"

$ if validate "$s"; then echo OK; else echo bad; fi
OK

$ if validate "1 foo 2 bar"; then echo OK; else echo bad; fi
bad