
이 간단한 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
임의의 데이터에 사용할 수 없습니다.)