检查参数是否正确传递给 shell 脚本

检查参数是否正确传递给 shell 脚本

我正在编写一个 shell 脚本,需要在执行时传递一个参数。我的问题是如何检查参数是否与给定的模式匹配。示例:

./script.sh 1 - 9

在这个例子中,1 - 9thing 只有一个参数,而模式是"%s - %s"。如何检查是否与模式匹配。谢谢您的建议

答案1

我在 shell 脚本中使用的三个主要程序是 sed、grep 和 awk。每个程序的妙处在于正则表达式。在 shell 中,$@ 都是位置参数,因此您可以回显 $@ 并将其导入 awk 或 grep。

echo $@ | awk '/\S+ - \S+/ {print}'

使用 grep 您可以测试返回值,$?:

$ echo 1 - 9 | egrep '\S+ - \S+'
1 - 9
$ echo $?
0
$ echo  - 9 | egrep '\S+ - \S+'
$ echo $?
1

用测试检查返回值:

ARGS="$@"
MATCH=$(echo "$ARGS" | egrep '^\S+ - \S+')
if [ $? = 0 ]
then
  echo "good match"
fi

或者使用上面的 MATCH:

if [ -n "$MATCH" ]
then
  echo "good match"
fi

相关内容