首页 > 解决方案 > 从读取验证 bash 中传递的参数数量

问题描述

我有一个关于验证用户输入关于用户在 bash 脚本中传递的参数数量的问题。例如,如果我使用:

if [[ $# -eq 2 ]]
then...

这将检查是否从命令行传递了 2 个参数,如下所示:

./somescript.sh arg1 arg2

但是如何验证用户是否在询问时传递了 2 个参数?例如:

echo "Type 2 names:"
read...
if [[ user passed more || less than 2 arguments]]
   echo "incorrect number of names"

现在,如果我尝试使用$# -eq 2它不起作用。

正确的方法是什么?

标签: bashshell

解决方案


使用数组:

read -r -a array
if [[ "${#array[@]}" -eq 2 ]]; then ...

见输出:

declare -p array

推荐阅读