숫자 연산자: 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

명령을 사용하여 스크립트를 실행합니다 ./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 "$@"

관련 정보