我的脚本出现问题。我想要做的是取决于在运行时输入到脚本中的整数值,它将在完成之前迭代文件转换拆分一定次数。我预见的一个问题是,当通过脚本的while循环部分运行时,我将比较字符串而不是整数。这是一些代码。
GTF="$1"
SP=$(dirname "$SCRIPT")
echo "Welcome to this script, Please do me a favor and enter the dimensions of the original Geographical Tiff file so I do not crash myself!!"
# Read the x axis max and y axis max so we do not have any errors.
echo "X axis -> "
read XMAX
echo "Y axis -> "
read YMAX
XMAX和YMAX值需要在脚本中为整数才能使其按预期工作。有人有解决方案吗?
谢谢!
答案 0 :(得分:3)
您可以操纵shell中的字符串,例如bash
,就像它们是整数一样。
如果您希望在使用它之前确保它是一个整数,您可以使用正则表达式来执行此操作,例如:
echo -n "ENTER value: "
read xyzzy
if [[ ! $xyzzy =~ ^[0-9]+$ ]] ; then
echo "No good"
exit
fi
(( xyzzy = xyzzy + 1 ))
echo "Adding one gives" $xyzzy
这将确保数字仅由数字组成(如果您还想允许负整数,请使用^-?[0-9]+$
):
pax$ testprog.sh
ENTER value: 5
Adding one gives 6
pax$ testprog.sh
ENTER value: x
No good
pax$ testprog.sh
ENTER value: x55y
No good
如果您正在使用不支持正则表达式相等的非bash
shell,则可以调用grep
之类的外部程序并检查其返回码。
请记住,如果您使用[[
之类的内容将其与其他值进行比较,请使用-eq
,-ne
,-lt
及其兄弟比==
或!=
。
后一组是 string 比较,前者为数字。 bash
手册页更深入地介绍了这一点。