как я могу читать построчно из переменной в bash

lynx использует текущие локали для определения кодировки, которую он может использовать для отображения страниц. Однако эта информация, вероятно, недоступна в cron, поэтому вам нужно сделать что-то вроде этого:

lynx -display_charset=UTF-8 -dump http://example.com/some/page.html

(конечно, используйте кодировку вашей системы, если она отличается от UTF -8 ).

0
11.11.2019, 15:46
3 ответа

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

promotebuilds=( 3.1.161 1.0.132 )
for i in "${promotebuilds[@]}"; do
  egrep "$i" /home/rahul-optit/packages
done
2
28.04.2021, 23:27

@Jesse _Ответ b - способ сделать это.

Однако, если вы не имеете никакого влияния на ввод, вы можете использовать IFS=,и read, чтобы разделить строку и сделать ее массивом.

printf '%s' "$PROMOTEBUILDS" | IFS=, read -a promotebuilds
for i in "${promotebuilds[@]}"; do
  egrep "$i" /home/rahul-optit/packages
done
3
28.04.2021, 23:27

Может я не понял вопроса. Во-первых, ваша переменная имеет только одну строку.

Все это время я читал строки из переменной так же, как и из обычного файла, за исключением того, что я заключаю их в кавычки и использую '<<<' вместо '<', чтобы передать их в цикл while.

VARIABLE=$(cat somefilewithmultiplelines)
while read i ; do echo "$i" ; done <<< "$VARIABLE"
0
23.11.2021, 00:06

Теги

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