Небуферизованная команда socat для подключения последовательных портов на удаленных машинах и регистрации данных

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

$ {! Name [@]}
$ {! Name [*]}

Список ключей массива . Если имя является переменной массива, расширяется до списка индексов (ключей) массива, назначенных в имени. Если имя не является массивом, расширяется до 0 , если имя установлено, и до нуля в противном случае. Когда используется @ и расширение появляется в двойных кавычках, каждая клавиша заменяется отдельным словом.

Для вашего примера:

#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in "${!AR[@]}"; do
  printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done

Это приводит к:

${AR[0]}=foo
${AR[1]}=bar
${AR[2]}=baz
${AR[3]}=bat

Обратите внимание, что это также работает для непоследовательных индексов:

#!/bin/bash
AR=([3]='foo' [5]='bar' [25]='baz' [7]='bat')
for i in "${!AR[@]}"; do
  printf '${AR[%s]}=%s\n' "$i" "${AR[i]}"
done

Это приводит к:

${AR[3]}=foo
${AR[5]}=bar
${AR[7]}=bat
${AR[25]}=baz
4
09.11.2016, 11:37
0 ответов

Теги

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