Bash检查特定格式的用户输入

时间:2014-09-11 21:38:10

标签: bash input format range error-checking

我正在尝试在我的脚本中执行检查,以确保用户以正确的格式输入数据。

  1. 我需要一张支票,以确保用户直接输入正整数,然后输入字母' k'

    有效输入的示例:
    4K
    25K
    17K
    无效输入的示例
    2.1
    4J
    -2k
    我需要什么
    如果[[输入格式正确]];然后
    ...
    ...
    fi

  2. 修改 到目前为止,我对此有以下几点:
    如果! [[regex =〜^ [1-9] + k $]];做
    但这似乎没有用。有什么想法吗?

    1. 这个有点棘手。我需要一个检查,以确保用户输入一系列值,由最小和最大范围表示,然后直接跟随' 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

1 个答案:

答案 0 :(得分:0)

使用regular expressions in BASH这是非常合理的。其他详细信息可在the Bash manual中找到。

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