几年前,当我们学习 Bash 脚本时,我们的老师告诉我们,我们应该做的第一件事是过滤给定参数的"类型",并在它们与预期不同时抛出错误。
(例如,如果我们的脚本需要 2 个参数来求和它们,我们应该首先检查它们是否确实是数字(
他告诉我们使用的方法是sed
命令。
在上面的例子中,我们将从参数中获取与数字不同的所有字符,如果有的话,我们会将其视为非数值,从而引发错误。
由于这种方法对我来说看起来很简陋,我想问一下:
有什么优雅的方法可以实现这一点吗?
这个过程在构建脚本时是否实际完成?
当 shell 内置此功能时,sed
是乏味的矫枉过正。
case $1 in *[!0-9]*) echo "$0: not a number: $1" >&2; exit 127;; esac
(如果你想允许负数或非整数,显然要调整 glob 模式。
shell 本身根本没有任何类型 - 一切都是字符串。