bash - bash 中的变量验证(名称和 IP 地址)

标签 bash validation variables

在我的 bash 脚本的 header 中,我必须询问用户名和他的 IP 地址。

我需要以这种方式验证条目:

  • 用户名必须存储在name 变量中,用下划线代替他的空格。例如,如果用户点击 "Albert Smith",我必须将 "Albert_Smith" 存储到我的变量 name 中。
  • 对于ip地址,我需要知道ip地址是否符合格式。 如果格式不好,我必须报错并提示用户输入一个好的ip地址才能继续操作。

我知道我需要使用“阅读”,但我不知道要实现我的短脚本(替换和验证)。 提前致谢:)

最佳答案

还有一种方式。仅限 Bash:

#!/bin/bash

read name
name=${name// /_}

read ip
if [[ "$ip" =~ ^([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})[.]([0-9]{1,3})$ ]]
then
    for (( i=1; i<${#BASH_REMATCH[@]}; ++i ))
    do
      (( ${BASH_REMATCH[$i]} <= 255 )) || { echo "bad ip" >&2; exit 1; }
    done
else
      echo "bad ip" >&2
      exit 1;
fi

echo "name:$name"
echo "ip:$ip"

关于bash - bash 中的变量验证(名称和 IP 地址),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015206/

相关文章:

python - 当 IPython 运行脚本遇到异常时生成非零退出代码

json - 使用jq将多个JSON的一个属性连接到一个文件中

subdomain - 一个电子邮件 ID 允许有多少个子域?

javascript - 或者在 2 个文本框中键入验证 - ASP.NET Webforms

html - 在html中变量前的点表示什么?

C# 方法返回与 lambda 中的变量

linux - 在远程系统上复制文件

php - 从终端访问 MAMP 的 MySQL

java - 当按下的键不是数字时,如何正确使用此事件?

c - 在 C 中声明枚举变量的最佳方法是什么?