Bash检查特定格式的用户输入
我试图在脚本中实现一个检查,以确保用户以正确的格式输入数据Bash检查特定格式的用户输入,bash,input,format,range,error-checking,Bash,Input,Format,Range,Error Checking,我试图在脚本中实现一个检查,以确保用户以正确的格式输入数据 我需要一个检查,以确保用户输入的正整数后面紧跟字母“k” 有效输入的示例: 4k 25k 17k 无效输入的示例 2.1 4j -2k 我需要什么 如果[[输入格式正确]];然后 … … fi 编辑: 到目前为止,我对此的了解如下: 如果![[regex=~^[1-9]+k$];做 但这似乎不起作用。有什么想法吗 这个有点棘手。我需要一个检查,以确保用户输入的值范围由最小和最大范围表示,后面紧跟一个“k”,并由一个没有空格的破折号分隔。
4k
25k
17k
无效输入的示例
2.1
4j
-2k
我需要什么
如果[[输入格式正确]];然后
…
…
fi
如果![[regex=~^[1-9]+k$];做
但这似乎不起作用。有什么想法吗
4k-5k
1k-2k
3k-6k,1k-9k,3k-8k
2k-5k、12k-20k
无效输入的示例
2.5-3 4k-10k
4k-3k,8k-9k
7k-9k,-3-6
我需要什么
如果[[输入格式正确]];然后
…
…
fi
这是非常合理的使用。有关更多详细信息,请参阅
这是行不通的。仍然需要一个解决方案。我认为您已经接近修复了Thotopos,但是如果不知道到底是什么“仍然不起作用”,那么进一步调试将更加困难。在任何情况下,StackOverflow都不是代码编写服务;希望这个答案能让你写一个合适的解决方案我看你用的是*符号。这将不起作用,因为它与前面的0个或多个字符匹配。我需要用户输入至少1位数字,因此我需要+运算符而不是*。现在我有了如果![regex=~^[1-9][0-9]+k$];然后,这似乎不起作用。无论我使用什么输入,我都无法让它通过。到目前为止,我非常感谢您的帮助。
*
是有意的,也是重要的<代码>[1-9][0-9]*匹配非零数字,后跟零或更多其他数字。如果允许零,您可以执行[0-9]+
,但您的组合[1-9][0-9]+k
将只匹配两位数或更长的数字。啊,很有趣。你说得对。这就是我来这里的原因:)
singleinputregex='^[1-9][0-9]*k$'
if [[ $singleinput =~ $singleinputregex ]]; then
# ...
fi
rangeinputregex='^[1-9][0-9]*k-[1-9][0-9]*k(,[1-9][0-9]*k-[1-9][0-9]*k)*$'
if [[ $rangeinput =~ $rangeinputregex ]]; then
# ...
fi