$*가 예상대로 작동하지 않는 이유는 무엇입니까?

$*가 예상대로 작동하지 않는 이유는 무엇입니까?

함수에 $*를 사용하여 함수의 모든 명령줄 인수로 확장하려고 하는데 이상한 동작이 발생합니다.

$ function repeat() {
echo "$*"
}

$ repeat puts hello    # this gives me nothing at all
$ repeat "puts hello"  # this asks me for more input
repeat>

왜 이런 일을 하는가?

답변1

zsh여 보세요 bash.

에서 (에서 영감을 얻은 ) zsh은 명령에 사용되는 구성입니다 .repeatcsh repeatrepeat

repeat 10 echo foo

foo를 10번 에코합니다.

귀하의 전화를 걸고 싶다면 예약어 repeat로 간주되지 않도록 인용해야 합니다 .repeat

$ echo $ZSH_VERSION
5.0.2
$ 'repeat'() echo "$*"
$ type -a repeat
repeat is a reserved word
repeat is a shell function
$ repeat 2 echo foo
foo
foo
$ "repeat" 2 x
2 x

그러나 함수 이름으로 다른 것을 사용하는 것이 좋습니다.

관련 정보