zsh проверяет наличие ключа в ассоциативном массиве с помощью косвенного расширения

На веб-сайте, на котором вы пытаетесь это сделать, есть файл robots.txt, содержащий

User-Agent: *
Disallow: /

В рекурсивном режиме wgetподчиняется этому файлу и поэтому отказывается делать рекурсивные копии.

0
24.01.2020, 01:52
2 ответа

Это обсуждалось здесь . Чтобы избежать передачи значений, вам придется использовать строку с правильным форматом в другом расширении параметра (${:-word}, то есть ), которое затем расширяется на${(P)+...}:

(( ${(P)+${:-${bar}[abc]}} )) && print OK || print FAIL
2
18.03.2020, 20:17

Вот еще один ответ, который хорошо работает:

typeset -A foo=([abc]=def)

has_key() {
   local var="${1}[$2]"
   (( ${(P)+${var}} )) && return 0
   return 1
}
has_key foo abc && print "foo has abc"
has_key foo def || print "foo doesn't have def"
# Outputs:
# foo has abc
# foo doesn't have def
0
01.03.2021, 20:46

Теги

Похожие вопросы