Что здесь не так: элемент экземпляра нельзя использовать для типа [duplicate]

Вы можете получить доступ к каждой букве отдельно уже без преобразования массива:

$ foo="bar"
$ echo ${foo:0:1}
b
$ echo ${foo:1:1}
a
$ echo ${foo:2:1}
r

Если этого недостаточно, вы можете использовать что-то вроде этого:

$ bar=($(echo $foo|sed  's/\(.\)/\1 /g'))
$ echo ${bar[1]}
a

Если вы можете 't даже использовать sed или что-то в этом роде, вы можете использовать первый метод выше в сочетании с циклом while, используя длину исходной строки (${#foo}) для сборки массива.

Внимание: код ниже не работает, если строка содержит пробелы. Я думаю, что ответ Вон Катона имеет больше шансов выжить со специальными символами.

thing=($(i=0; while [ $i -lt ${#foo} ] ; do echo ${foo:$i:1} ; i=$((i+1)) ; done))

37
задан Cœur 16 October 2017 в 18:15
поделиться