zparseopts
이 간단한 예제 스크립트에 대해 예상되는 출력을 얻지 못하기 때문에 잘못 사용하고있는 것 같습니다 .
zparseopts
.NET Framework 없이 선언 되었음에도 불구 -h
하고 잘못 가정 --help
하고 인수를 취하는 것 같습니다 :
.
set -- --help --checkout foo 1 2 3 4
declare -A misc
zparseopts -E -D -K \
-A misc \
'-checkout:' \
h \
-help
for k v in ${(@kv)misc}; do
echo flag $k: $v
done
echo "argv $@"
이것은 출력되어야합니다
flag --help:
flag --checkout: foo
argv 1 2 3 4
그러나 대신 --help가 인수를 취한 것처럼 인쇄합니다. -A
및 연관 배열을 잘못 사용하고 있습니까?
flag --help: --checkout
flag foo:
argv: 1 2 3 4
zparseopts
그것이 당신이 원하는 것을 정확히 하고있는 것으로 밝혀졌습니다 . 문제는 이후 echo
명령문이 연관 배열의 키와 값을 올바르게 표시하지 않는다는 것입니다.
비정상적으로의 zsh
경우 더 많은 따옴표가 필요합니다. for
루프를 다음으로 바꾸십시오 .
printf 'flag %s: %s\n' "${(kv@)misc}"
@
매개 변수 확장 플래그 와 쌍을 이루는 큰 따옴표를 사용 하면 빈 값이 결과에서 별도의 단어로 처리됩니다. ( printf
키-값 쌍을 반복하는 더 짧은 방법으로 사용 ).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다