zsh에서 $argv가 비어 있는 이유는 무엇입니까?

zsh에서 $argv가 비어 있는 이유는 무엇입니까?

파일을 제출하다

#!/bin/zsh
echo $*
echo $0

echo ---

echo $argv
echo $argv[0]

명령이 다음과 같을 때

./a 1 2

이것은 보여준다:

1 2
./a
---

[0]

명령은 다음과 같습니다.

zsh ./a 1 2

이것은 보여준다:

1 2
./a
---
1 2

명시적인 명령으로 'zsh'가 결과를 변경할 수 있는지 여부는 무엇입니까? 그리고 argv[0]이 할당되지 않은 이유는 무엇입니까?

답변1

$0위치 매개변수가 아니고 의 일부가 아니며 $@스크립트/함수의 이름입니다. $*, $@그리고 $argv옵션을 활성화하지 않는 한 위치 매개변수의 모두 동일한 일반(희소하지 않은) 배열이며 모든 배열 인덱스는 zsh에서 1부터 시작합니다 ksharrays.

그러나 배열 인덱스가 0에서 시작하도록 옵션을 활성화하면 또는 이 첫 번째 위치 매개변수인 것을 ksharrays알 수 있습니다 .$argv[0]${@[0]}$1

확장이 포함되지 않더라도 ksh93 과 유사한 쉘 배열( 포함 bash) 에서 혼란이 발생할 수 있습니다 . 이러한 혼란은 기반이 되는 Bourne 쉘이 쉘 배열 인덱스를 0에서 시작하도록 선택한 Korn과 쉘에서 사용하는 대부분의 다른 쉘 및 도구가 어레이 인덱스가 1에서 시작하도록 선택한 결과입니다.${@:0:1}$0"$@"$0

이에 대한 자세한 내용은Zsh 배열의 첫 번째 요소가 0 대신 1로 색인화되는 이유가 있습니까?

관련 정보