zsh
имеет подстановку параметров, отличную от Бэша, что документировано в man zshexpn
. Она поддерживает различные модификаторы поведение расширения, которые заключены в круглые скобки перед именем переменной: ${(X)name}
. Модификатором для включения ключей массивов (в том числе и для ассоциативных массивов) является k
: ${(k)array}
расширяется до списка ключей в массиве, за исключением того, что если ключом является пустая строка, она опускается. Для сохранения пустого ключа используйте двойные кавычки и модификатор @
. Цикл
for x in "${(@k)array}" ; ...
будет перебирать ключи массива @
.
Поскольку Kali основана на Debian, вы можете использовать apt-offline
: Способы обновления Ubuntu (дистрибутивы на основе debian) в автономном режиме