正如我在标题中解释的那样,我需要终止执行。我的脚本如果输入值不是整数。我从位置参数中获取数字。这是代码:
a=9
kb=0
var=$2
var=${var:3:1}
if [ ${#2} -ne 4 ]
then
echo "ethN is wrong"
exit 1
fi
if [ "$var" -gt 10 -o "$var" -lt 0 ]
then
echo "N is wrong"
exit 1
else
echo "N is ok"
fi
当我使用此条目时:
bash lartc.sh -i eth#
我的脚本没有结束,我想要它,因为"#"来自eth#不是一个整数,这就是我想要的。 (例如有效输入:eth2,eth3等......)。但是,我的终端告诉我"#"预计将是一个int。我验证长度并且数字必须在0-9之间,我只需要验证它的类型。有任何想法吗?谢谢!
答案 0 :(得分:0)
如果你只是想验证某个位置的N是一个整数,那么下面的方法应该是好的:
#! /bin/sh
var=$2
result=$(echo ${var} | grep -E "eth[0-9]")
if [ -z "${result}" ]; then
echo "N is wrong"
exit 1
else
echo 'N is ok'
fi
答案 1 :(得分:0)
如果您正在使用bash,为什么不对[[ $2 =~ "^eth[0-9]$" ]]
进行测试?如果这是真的,你知道:
^
和$
eth
如果有人在systemd linux上运行并尝试匹配enp4s0,你会怎么做? :P
答案 2 :(得分:0)
使用=~
运算符来判断N是否为正整数。
stringA =~ regexp
stringA匹配扩展正则表达式regexp。仅适用于bash 3.0及更高版本。只能在[[...]]内使用。 =〜正则表达式匹配运算符不再需要引用
[[...]]内的模式。 http://tldp.org/LDP/abs/html/bashver3.html
var=${var:3}
if [[ ! $var =~ ^[1-9][0-9]*$ ]]
then
echo "ethN is wrong"
exit 1
fi