我正在尝试验证变量的格式是一个数字,并且至少有10位数字,带有前导零,在expect脚本中。
在bash脚本中,它看起来像这样:
[[ "$var" != +([0-9]) ]] && echo "bad input" && exit
while [[ $(echo -n ${var} | wc -c) -lt 10 ]] ; do var="0${var}" ; done
对于以下输入:
16
我正在尝试实现以下输出:
0000000016
答案 0 :(得分:2)
检查变量是否只有数字的最简单方法是使用正则表达式。 Expect的正则表达式完全取决于任务:
if {![regexp {^\d+$} $var]} {
puts "bad input"
exit
}
使用零填充最好通过格式化值来完成;如果你知道C printf()
,你就会认出格式:
set var [format "%010d" $var]
答案 1 :(得分:0)
Expect实际上只是TCL的扩展,因此您可以使用TCL提供的任何工具。 TCL是一种不同寻常的语言,但要做你想做的事并不难。
# Set a test string.
set testvar 1234567890
# Store the match (if any) in matchvar.
regexp {\d{10,}} $testvar matchvar
puts $matchvar
# Test that matchvar holds an integer.
string is integer $matchvar
string is命令相对较新,因此如果您的TCL解释器不支持,您可能必须依赖regexp的返回值。