이 간단한 bash 스크립트가 왜 인쇄되지 않습니까 echo $1
?$1
#!/bin/bash
# function.sh
print_something () {
echo $1
}
print_something
$ ./function.sh 123 -> why doesn't it print '123' as a result?
답변1
위치 매개변수는 스크립트의 기본 수준에 있는 스크립트 매개변수를 참조하지만기능 매개변수함수 본문 내부. 그래서
print_something Something
실제로 인쇄됩니다 Something
.
스크립트에서 함수로 인수를 전달하려면 이를 명시적으로 수행해야 합니다. 사용
print_something "$1"
첫 번째 인수를 전달하거나
print_something "$@"
이 모든 것을 통해 예제의 함수는 첫 번째 함수만 사용합니다.
답변2
이는 호출된 함수가 상위 함수/호출자의 세트와 관계없이 자체 위치 매개변수 세트를 갖기 때문입니다. 노력하다
print_something "$1"
(또한 echo "$1"
참조 printf '%s\n' "$1"
매개변수는 확장되므로 echo
임의의 데이터와 함께 사용할 수 없다는 점을 기억하세요.)