Get ROOTFS_QTOPIA_QT4-20121108.TAR.GZ
из DVD-DVD
yaffs2utils на моей среде Dev.
sudo tar xvf rootfs_qtopia_qt4-20121108.tar.gz
sudo mkyaffs2 rootfs_qtopia_qt4 rootfs_qtopia_qt4.img
и скопировали на мою карту microSD и скорректировали мою SitearmaRM.ini
, чтобы взять этот файл вместо Flash-версии MLC2 NAND.
-121--244541-
for f do exec <"$f"
: handle stdin
done
Неинтерактивная оболочка будет обрабатывать любое перенаправление из файла, которое не может быть прочитано, или что не существует при ассоциированном W / специальном встроенном в качестве фатальной ошибки и выхода сразу со значимым диагностическим сообщением. Написано в Стдерр. Таким образом, ваши параметры являются действительными, читаемые файлы и приведенное выше оператор не сделают ничего полезного, пока вы не замените : ...
Часть w / что-то полезное, или пользователь предоставил неверный параметр, и сценарий выходит на основе осмысленно. Отказ
Когда вы делаете ...
for var in ...; do : compound command list on "$var"; done
в в ...;
в ...; BIT - это необязательное оператор в синтаксисе, который позволяет заменить параметр, установленный для набора по умолчанию, который является вашим списком аргументов Отказ
Так что ...
for var do : compound command list on "$var"; done
... вероятно, что вы ищете здесь.
for f do exec <"$f"
: now do some stuff w/ stdin
done
... где оболочка будет итеречно назначать stdin и проверяют как читаемые файлы, любые аргументы предоставили ваш скрипт для всех команд, которые следуют следующему инструкции
, пока все параметры не будут исчерпаны, и для
LOOP IS сделано
. Если он не может сделать это, то он будет отформатировать и распечатать ваше сообщение об ошибке для вас в стандартной форме, к которой пользователь уже привыкнет.
Вот один из способов Perl:
perl -ne 'if (/^adc\s+\w+\s+(\w+)/) { print "Name: $1\n" }
elsif (/^\s*rules\s*{/) { $inrule = 1; }
elsif (/}/) { $inrule = 0; }
elsif (/^\s*(\S*)/) { print "Rule: $1\n" if $inrule; }'
это проходит через каждую строку файла, печатает имя :
Линия, когда
Он видит линию ADC
, а затем делает плохую попытку распознавания
Правила {}
Блоки, печать каждую строку из них как правило:
.
Было бы гораздо более надежно использовать правильный парсер для вашего ввода формат; Этот одноклассник сломается, если макет не совсем так, как в ваш вопрос.
Существует несколько программ для создания соединений сокетов из командной строки (или через скрипт оболочки). Наиболее распространенным, вероятно, NetCat, из которых существует как минимум три реализации:
Оригинал один © 1995-1996 Avian Research (NetCat Hobbit). Никакой хорошей агрессивной ссылки, о которой я знаю, так вот входит в пакет Debian Tracker: https://tracker.debian.org/pkg/netcat
netcat6, переписывание. Сейчас объявлено устаревшим; http://www.deepspace6.net/projects/netcat6.html
netcat-openbsd, переписывание проектом OpenBSD. , вероятно, тот, который вы хотите. код можно увидеть по адресу http://bxr.su/openbsd/usr.bin/nc/
SOCAT, а не переписать, а одинаковую идею, со многими дополнительными функциями. Другой хороший выбор Если вам нужны все функции и не против дополнительной сложности. http://www.dest-unreach.org/socat/
Ручная страница дает много примеров, например, как (на основе гораздо более страшных примеров на странице человека) вы можете запустить BC
На разъеме:
mkfifo /tmp/f && cat /tmp/f | bc -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
Затем вы можете подключиться к этой сети BC
, используя:
nc localhost 1234
или с SOCAT
, это:
socat EXEC:'bc -i' TCP4-LISTEN:1234,bind=127.0.0.1 # server
socat - TCP4:127.0.0.1:1234 # client
-121--174906- Если для формата файла есть правильный парсер, вы должны использовать его. Не хватает этого, вот решение, которое работает для вашего образца ввода:
$ awk '/^adc/{print "name:",$3} /^[[:space:]]*rules/{getline;print "rule:",$1}' file
name: name_of_virtual_server
rule: Exchange__all_services2.dat/Exchange__all_services2_rule7
/ ^ adc / {print "Имя:", $ 3}
для любой строки, которая начинается с ADC
, распечатайте Имя:
и третий элемент на линии.
/ ^ [[: Space:]] * Правила / {getline; Print "Правило:", $ 1}
для любой строки, которая начинается с пробелов (необязательно), а затем правила
, это распечатывает первый элемент на линии, которая следует.