数字运算符: if [[ "$#" -ne 1 ]] 始终输出 true,而 --echo "$#" -- 输出 1

数字运算符: if [[ "$#" -ne 1 ]] 始终输出 true,而 --echo "$#" -- 输出 1

我试图success在位置参数的数量等于 1 时输出,否则出错。

#!/usr/bin/env bash

foo() {
  if [[ "$#" -ne 1 ]]
  then echo "error"
  else
    echo "success"
  fi
}
foo

我用 command 执行脚本./my_script 1。无论我使用命令还是error运行脚本,输出始终都是。./my_script 1./my_script 1 2

我期望./my_script 1输出成功

答案1

谢谢你发布新问题!查看正在使用的代码可以清楚地了解情况。

您已将一个参数传递给整个脚本,但是函数的参数foo

如果你想要脚本的函数内的参数,将它们传递:

foo() {
  if [[ "$#" -ne 1 ]]
  then echo "error"
  else
    echo "success"
  fi
}
foo "$@"

相关内容