【发布时间】:2017-09-27 21:17:20
【问题描述】:
我有一个要求,其中 $1 应该只是一个大于零的正整数或逗号分隔的正整数列表。
./xyz.sh 1
或者
./xyz.sh 1,11,124
任何其他输入 - 脚本应该退出。
$1 - 命令行参数
我试过了:
PARA_METERS=\`echo $1\`
if [[ "$PARA_METERS" =~ ^([1-9]+,)*[1-9]+$ ]]; then
和
echo $1|/usr/bin/perl -0777 -ne '/^([1-9]+,)*[1-9]+$/ && print'
这适用于命令行,但不适用于脚本。
\#!/bin/bash 是我正在使用的外壳。我无法在 shell 脚本中处理它!
我可以在脚本中使用Python/Perl 或sed/awk 来检查正则表达式并进行验证。
OS: Linux 2.6.32-358.32.3.el6.x86_64
Shell: GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
【问题讨论】: