linux - 如何控制 Shell 脚本的输入?

标签 linux bash shell

我正在从用户获取参数 ./inputControl.sh param1 param2 ... 我希望用户只能输入数字。不能输入任何字等

如果他们输入单词,我会向他们显示错误。

感谢解答

最佳答案

Bash 对正则表达式的支持还算不错

#!/usr/bin/bash
param1=$1
param2=$2

number_regex="^[0-9]+$"

if ![[ $param1 ]] || [[ $param1 !~ $number_regex ]] ; then
    echo Param 1 must be a number
    exit 1
fi
if ![[ $param2 ]] || [[ $param2 !~ $number_regex ]] ; then
    echo Param 2 must be a number
    exit 1
fi

如果您也可以接受 float ,那么您可以将 number_regex 设置为如下内容:

"^[+-]?[0-9]+\.?[0-9]*$"

"^[+-]?[0-9]+\.?[0-9]*([eE][+-]?[0-9]+)?$"

(最后两个正则表达式未经测试,可能不太正确)。

关于linux - 如何控制 Shell 脚本的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670443/

相关文章:

java - 从脚本设置 Java 版本

c - 自定义简单 Shell 中的错误 'ls' 命令行为

linux - 如何在 tmux 窗口中启动脚本后自动终止 ssh 连接?

bash - 如何创建重启时不启动的 systemd 服务?

regex - 来自终端的 Sed 正则表达式字符串替换

linux - Unix命令获取没有基本名称的文件路径

windows - 命令提示符 : Execute Commands from Any Text File (Not Having ".bat" or ".cmd" Extensions)

linux - 从管道分隔文件中的字段查找和替换管道分隔符

linux - 如何在 Linux 中创建一个可以使用 ROT13 解密和加密文件的菜单?

linux - 使用 Oracle PL/SQL SP 在不同的 Linux 服务器上运行 Shell 脚本