以下脚本在我的Ubuntu 16.04 shell上按预期工作:
Teststring="1234a5"
re='^[0-9]+$'
if ! [[ $TestString =~ $re ]]; then
echo "is not a number"
exit 1
fi
在我的目标上虽然,我只有busybox而不是一个完整的shell,它引发了以下错误:
ash: =~: unknown operand
如何使其与busybox一起使用?
背景:我有一个busybox脚本,想要从系统上的特殊文件读取一个数字,用它做一些计算并将结果写到另一个文件。 在进入"而不是数字" -Errors以后,我想做一个propper check bevorehand。
答案 0 :(得分:0)
egrep的
if ! echo "$Teststring" | egrep -q "$re"; then
或修改重新
re='[0-9]\+'
if ! expr "$Teststring" : "$re"; then
在该特定情况下:如果字符串为空或包含非数字
case $Teststring in
''|*[!0-9]*)
echo "is not a number"
;;
esac