![숫자 연산자: if [[ "$#" -ne 1 ]]는 항상 true를 출력하고 --echo "$#" -- 1을 출력합니다. [중복]](https://linux55.com/image/143269/%EC%88%AB%EC%9E%90%20%EC%97%B0%EC%82%B0%EC%9E%90%3A%20if%20%5B%5B%20%22%24%23%22%20-ne%201%20%5D%5D%EB%8A%94%20%ED%95%AD%EC%83%81%20true%EB%A5%BC%20%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B3%A0%20--echo%20%22%24%23%22%20--%201%EC%9D%84%20%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%20%5B%EC%A4%91%EB%B3%B5%5D.png)
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 "$@"