Shell 将字符串分成多个部分并进行验证
我正在写一个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
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个字符的样本数据来理解问题吗?请减少您的问题描述的大小,我的朋友;-)。祝您好运。