LINUX.ORG.RU

Объясните причину разницы

 


1

2
#!/bin/bash

words_for_add="one two three four five six seven eight nine ten"
new_string="digits:"

for word_for_add in "$words_for_add"
do
	new_string=$(echo "$new_string" | sed 's/$/ '"$word_for_add"'/')
done

echo "$new_string"

exit 0
# cycle_test 
digits: one two three four five six seven eight nine ten

но:

#!/bin/bash

words_for_add=$(echo "one two three four five six seven eight nine ten" | tr ' ' '\n')
new_string="digits:"

echo "$words_for_add" | while read word_for_add
do
	new_string=$(echo "$new_string" | sed 's/$/ '"$word_for_add"'/')
done

echo "$new_string"

exit 0
# cycle_test 
digits:

Почему так?

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

из-за того что ты поместил $words_for_add в ковычки «» в цикле for, вся эта фраза стала одним единственным словом.

Spoofing ★★★★★
()
#!/bin/bash

words_for_add=$(echo "one two three four five six seven eight nine ten" | tr ' ' '\n')
new_string="digits:"

echo "$words_for_add" | while read word_for_add
do
	new_string=$(echo "$new_string" | sed 's/$/ '"$word_for_add"'/')
	echo "$new_string"
done

echo "$new_string"

exit 0
# cycle_test 
digits: one
digits: one two
digits: one two three
digits: one two three four
digits: one two three four five
digits: one two three four five six
digits: one two three four five six seven
digits: one two three four five six seven eight
digits: one two three four five six seven eight nine
digits: one two three four five six seven eight nine ten
digits:

Почему содержимое строки теряется на выходе из цикла?

Deleted
()
- for word_for_add in "$words_for_add"
+ for word_for_add in $words_for_add

А ещё | tr ' ' '\n' в создании words_for_add не имеет смысла, потому что присваивание вывода $() переменной превратит все переводы строк в пробелы.

E ★★★
()
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от Deleted

А что потерялось? 11? последняя инструкция

echo "$new_string"

ashot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.