Проблема безопасности MobileApps

В вашем вопросе возникает вопрос о «сценарии unix shell», но помечен bash. Это два разных ответа.

Спецификация POSIX для оболочек не имеет ничего общего с массивами, поскольку исходная оболочка Bourne не поддерживала их. Даже сегодня, на FreeBSD, Ubuntu Linux и многих других системах, /bin/sh не поддерживает массив. Поэтому, если вы хотите, чтобы ваш скрипт работал в разных совместимых с Bourne оболочках, вы не должны их использовать. В качестве альтернативы, если вы принимаете определенную оболочку, то обязательно укажите ее полное имя в строке shebang, например. #!/usr/bin/env bash.

Если вы используете bash или zsh или современную версию ksh , вы можете создать такой массив:

myArray=(first "second element" 3rd)

и элементы доступа, подобные этому

$ echo "${myArray[1]}"
second element

Вы можете получить все элементы через "${myArray[@]}". Вы можете использовать нотацию фрагмента $ {array [@]: start: length} , чтобы ограничить часть массива, на которую ссылаются, например. "${myArray[@]:1}", чтобы оставить первый элемент.

Длина массива - ${#myArray[@]}. Вы можете получить новый массив, содержащий все индексы из существующего массива с "${!myArray[@]}".

Старые версии ksh до ksh93 также имели массивы, но не нотацию на основе скобок и не поддерживали нарезку. Вы можете создать такой массив, как это:

set -A myArray -- first "second element" 3rd 

1
задан Andy2017 16 January 2019 в 07:28
поделиться