检查并修改expect脚本中变量的格式

时间:2012-06-08 21:48:34

标签: linux tcl expect

我正在尝试验证变量的格式是一个数字,并且至少有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

2 个答案:

答案 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的返回值。