Как обнаружить новую строку с помощью для цикла?

У Вас есть три опции:

1) Эмуляция (вино, перекрестно соедините Linux, Бордо),

2) Виртуализация (VMware Player или VMware Workstation, рабочий стол параллелей, Oracle Virtualbox)

3) Двойная загрузка

Для разработки C# на Linux Моно Проект является способом пойти. Можно разработать в MonoDevelop IDE, и подключение к SQL Server, размещенному в виртуальной машине с помощью SQL-клиента (для большего количества информации, см.: Моно / ADO.NET, Моно / ODBC, Моно / Доступ к базе данных)

Для получения дополнительной информации о Моно взглянули на Начальную страницу: http://mono-project.com/Start и Моно FAQ Технический, Моно FAQ Общий, Моно ASP.NET FAQ, Моно WinForms FAQ, Моно безопасность FAQ

Также см. их Планы и Дорожную карту

Благодаря Моно проекту можно даже создать приложения с C# для устройств Apple с помощью Монокасания или для Android с помощью Моно-Droid.

Также, если Вы хотите иметь последнюю версию Моно и инструментов, я рекомендую использовать openSUSE, потому что это - первое место, где Вы найдете последние обновления, Моно являющийся проектом поддержанный Novell, который является компанией, которая также спонсирует распределение openSUSE.

Править: (Завершение части Office вопроса)

//Пакеты офисных программ//

1) Lotus Symphony IBM-> http://symphony.lotus.com/software/lotus/symphony/home.nsf/home

2) OpenOffice Oracle-> http://www.oracle.com/us/products/applications/open-office/index.html

3) OpenOffice.org-> http://www.openoffice.org/

4) Office GNOME-> http://live.gnome.org/GnomeOffice

5) Go-oo.org-> http://go-oo.org/

6) SoftMaker Office-> http://www.softmaker.com/english/ofl_en.htm

7) KOffice-> http://www.koffice.org/

//Пакеты офисных программ онлайн//

0) Microsoft Office Онлайн-> http://www.officelive.com/en-us/

1) Приложения Google-> http://docs.google.com/

2) Zoho-> http://www.zoho.com/

3) ThinkFree-> http://thinkfree.com

4) Живые документы-> http://www.live-documents.com/

5) Ajax13-> http://us.ajax13.com/en/

6) ContactOffice-> http://www.contactoffice.com/

7) FengOffice-> http://www.fengoffice.com/web/

8) Zimbra-> http://www.zimbra.com/

8
17.05.2015, 22:08
3 ответа

Если Вы непосредственно используете строки под a for цикл, это будет работать на слово (здесь на одном слове: целое содержание $test так как это заключается в кавычки), не на символ. Необходимо использовать a while цикл с read для парсинга побуквенный, или представлять числовой параметр, который выполнил бы итерации по строке.

Кроме того, при использовании read, необходимо удостовериться, что новые строки и пробелы не интерпретируются как разделители и вызвать read считать один символ за один раз.

Вот рабочая версия:

#!/bin/bash

test="this is a
test"

printf %s "$test" | while IFS= read -r -N 1 a; do

        if [[ "$a" == $'\n' ]] ; then
                echo "FOUND NEWLINE"
        fi

printf %s "$a"

done

Вы могли заменить $'\n' с $'\012' или $'\x0a', так как они все представляют тот же код новой строки. Но это не то же как \015 или \r - это обозначает возврат каретки (возвратитесь к началу строки). В системах Linux новые строки представлены с помощью \n, но в Windows, например, они представлены последовательностью \r\n вместо этого. Именно поэтому, если бы у Вас был текстовый файл из Windows, то Вы могли бы обнаружить новые строки также путем поиска \r.

6
27.01.2020, 20:11
  • 1
    Короче говоря, это поворачивает заключенную в кавычки escape-последовательность как \n в его представление байта, так, чтобы Вы не должны были помещать ужасно выглядящие, заключенные в кавычки разрывы строки в свой тестовый оператор. –  rozcietrzewiacz 22.12.2011, 16:31

Можно проверить на новые строки в переменной очень легко в ударе с:

[[ $var = *$'\n'* ]]

Я нахожу более удобным использовать:

declare -r EOL=$'\n' TAB=$'\t' # at top of script
..
if [[ $var = *$EOL* ]]; then # to test (no field-splitting in [[ )
4
27.01.2020, 20:11

Я предложил бы использовать tr и затем test:

if [ -n "$(tr -cd '\n\r' < datafile)" ]; then
    echo "NEWLINE FOUND"
fi

tr -cd удаляет все кроме новых строк/возвратов каретки. Если будут новые строки в файле, то там будет произведен от который -n тест возвратит true.

1
27.01.2020, 20:11
  • 1
    Это не будет работать на файлы, не содержащие \rs, потому что замена команды удаляет запаздывающие символы новой строки ("$(printf '\n\n\n\n\n')" пустая строка). –  Stéphane Chazelas 17.05.2015, 23:33

Теги

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