gpt4 book ai didi

Shell 脚本整数输入

转载 作者:行者123 更新时间:2023-12-03 21:34:25 25 4
gpt4 key购买 nike

我的脚本有问题。我想要做的是取决于在运行时输入到脚本中的整数值,它会在完成之前迭代文件转换拆分一定次数。我预见的一个问题是,在运行脚本的 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 值需要是整数才能使其按预期工作。有人有解决方案吗?

谢谢!

最佳答案

您可以在 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和他们的兄弟而不是 ==!= .

后一组是字符串比较,前者是数字比较。 bash手册页更深入地介绍了这一点。

关于Shell 脚本整数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com