파일을 제출하다
#!/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로 색인화되는 이유가 있습니까?