![如何检查传递到 shell 脚本的参数数量是否正好为 2?](https://linux22.com/image/145983/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E4%BC%A0%E9%80%92%E5%88%B0%20shell%20%E8%84%9A%E6%9C%AC%E7%9A%84%E5%8F%82%E6%95%B0%E6%95%B0%E9%87%8F%E6%98%AF%E5%90%A6%E6%AD%A3%E5%A5%BD%E4%B8%BA%202%EF%BC%9F.png)
我有一些理解,要检查传递到 shell 脚本中的参数数量,我必须在 shell 脚本中执行以下操作:实施例1
if [ "$#" -ne 2 ]; then
do something;
fi
但是,我有点困惑,想知道运行时 shell 脚本的名称是否被视为参数的一部分,以及 python 脚本在涉及sys.argv
.
终端中的示例如下: 实施例2
./script.sh $1 $2
在这种情况下对于实施例2有多少参数实际上被认为传递给实施例1if else 循环。
答案1
脚本的名称不被视为位置参数的一部分。这意味着
somescript arg1 arg2
将设置$1
为arg1
和$2
to ,arg2
即为。$#
2
脚本的名称将在 中提供$0
,但$0
其特殊之处在于它是不是包含在数组 中$@
,$#
是 的长度(元素数)$@
。