2015-04-12 4 views
0

Как я должен перебирать все символы в строке.bash loop trough all chars в строке

Мой псевдокод

stringVar="abcde" 

for var in stringvar 
{ 
    do some things with var 
} 

результат мне нужно

б

с

d

Я хочу, чтобы петля все ВАР, но я могу только получить это для работы с пробелами s plitted вар как

stringVar="a b c" 


for var in stringVar; do 
    echo $var 
done; 

результат

б

с

, но я не могу это сделать для строки, Isnt расщепляется с пробелами.

вопрос помечен как дубликат, но не один из ответов (с upvotes) в связанных вопросов ..

+0

@alfasin они не объясняют, как выполнять действие на каждом символе. –

+2

[Да, они делают] (http://stackoverflow.com/a/10552175/635608), @SvenB – Mat

+0

Почему это вы считаете нужным? –

ответ

1
stringVar="abcde" 
for ((i=1;i<=${#stringVar};i++)); do 
    echo ${stringVar:$i-1:1} 
done 

Выход:

 
a 
b 
c 
d 
e 
+2

Почему не 'for ((i = 0; i <$ {# stringVar}; i ++)); do echo $ {stringVar: $ i: 1} '? –

+0

Да, это проще. – Cyrus

2

Вы можете использовать read для этого:

string="abcde" 
while read -n 1 char ; do 
    echo "$char" 
done <<< "$string" 

U петь -n 1read будет читать по одному персонажу за раз. Однако перенаправление ввода <<< добавляет новую строку в конец $string.