함수에 $*를 사용하여 함수의 모든 명령줄 인수로 확장하려고 하는데 이상한 동작이 발생합니다.
$ 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
은 명령에 사용되는 구성입니다 .repeat
csh
repeat
repeat
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
그러나 함수 이름으로 다른 것을 사용하는 것이 좋습니다.