Если там не будут существовать инструменты, чтобы заставить двоичные файлы Linux работать на Солярисе, Вы не сможете использовать двоичные файлы SDK Android на Солярисе, кроме основанных на Java. Если SDK Android является открытым исходным кодом, Вы могли бы, конечно, скомпилировать его на solaris, однако я не мог определить, является ли это открытый исходный код.
Альтернатива должна была бы настроить Linux (виртуальная) машина. Моим предпочтительным распределением был бы стабильный Debian (который является тем, что я использую для разработки Android).
Мне удалось решить мое требование при помощи
head testInputs/test1 -n $getLineNum | tail -n 1
getLineNum увеличивает на каждом цикле с условием продолжения.
но это не точный ответ для моего вопроса.
Также необходимо добавить некоторую вещь как #EOF в последней строке и искать его для повреждения цикла.
read
встроенная оболочка (она не могла установить переменную оболочки, если бы это не было).
Так, если Ваш busybox sh
на основе ash
, это:
while IFS= read -r line <&3; do
printf '%s\n' "$line"
done 3< "$InputFile"
Как в любой оболочке POSIX. Но как с любой оболочкой, с помощью while read
циклы к тексту процесса являются обычно плохой практикой сценариев оболочки.
Выше, Вам нужно:
IFS=
в других отношениях ведущие и запаздывающие незавершенные пробелы и вкладки разделяются от строк-r
, иначе обратные косые черты рассматривают как символ ESC и удаляют (если не оставлено)printf
, нет echo
который не работал бы на строки, которые являются, например, -nene
"$line"
заключенный в кавычки (нет $line
) иначе содержание строки разделяется на пробелах и вкладках и globbing расширенных шаблонах.<&3
и 3< ...
, если Вам нужен доступ к исходному stdin в цикле.Если файл содержит символы после последней строки, и Вы хотите отобразить их, можно добавить после цикла:
[ -z "$line" ] || printf %s "$line"
Обратите внимание, что тот цикл не может обработать двоичные данные ( NUL
символ).
while IFS= read -r line <&3 || [ -n "$line" ] ; do
чтобы не повторять внутренности цикла на непустом указателе длятся строку. Да, это все еще не обработает символ NUL.
–
18.01.2016, 23:35
busybox
к каждой команде? Разве Вы не вводите ту командную строку вbusybox
оболочка? Делает ту оболочку не, имеют aread
встроенный? (что делаетtype read
скажите Вам там?). – Stéphane Chazelas 19.08.2013, 11:50busybox
назовет его собственные команды в приоритете. Если Вы не хотите называть утилиты от/bin
или/usr/bin
, удалите те каталоги из$PATH
. – Stéphane Chazelas 19.08.2013, 12:41