Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 将字符串分成多个部分并进行验证_Shell - Fatal编程技术网

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

Shell 将字符串分成多个部分并进行验证,shell,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是后面时间戳的计数。现在我必须验证每个时间戳是否精确计数2次 最后,我想要一个确定或错误的结果 我自己找不到解决方案来分离字符串或执行任何检查操作。特定于bash的解决方案: validate () ( # executi

我正在写一个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是后面时间戳的计数。现在我必须验证每个时间戳是否精确计数2次

最后,我想要一个确定或错误的结果


我自己找不到解决方案来分离字符串或执行任何检查操作。

特定于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

你想达到什么目标?所需的输出是什么?
验证每个时间戳在字符串中是精确的2次
-验证两次发生的情况?所需的输出是否正确取决于,如果每个时间戳前面都有一个2,请编辑您的Q以显示您期望从给定输入中获得的精确输出(这与您口头描述的“前导2是后面时间戳的计数(IMHO))……这一系列数据真的在一行上吗?我们真的需要>80个字符的样本数据来理解问题吗?请减少您的问题描述的大小,我的朋友;-)。祝您好运。