Дизайн приложения UML для Android-приложений [дубликат]

Вы пользователь 742342nd задаете этот FAQ bash. Ответ также описывает общий случай переменных, заданных в подоболочках, созданных трубами:

E4) Если я передаю вывод команды в read variable, то почему вывод не появляется в $variable при завершении команды чтения?

Это связано с тем, parent-child между процессами Unix. Он затрагивает все команды, выполняемые в конвейерах, а не просто вызовы read. Например, соединение вывода команды в цикле while, которое повторно вызывает read, приведет к такому же поведению.

Каждый элемент конвейера, даже встроенная или оболочечная функция, запускается в отдельном process, дочерний элемент оболочки, запускающей конвейер. Подпроцесс не может повлиять на среду своего родителя. Когда команда read устанавливает переменную на вход, эта переменная устанавливается только в подоболочке, а не в родительской оболочке. Когда подоболочка выходит, значение переменной теряется.

Многие конвейеры, которые заканчиваются на read variable, могут быть преобразованы в подстановки команд, которые будут захватывать вывод указанной команды. Затем результат может быть назначен переменной:

grep ^gnu /usr/lib/news/active | wc -l | read ngroup

можно преобразовать в

ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)

Это, к сожалению, не работает, чтобы разделить текст между несколькими переменными, так как read, когда задано несколько переменных аргументов. Если вам нужно это сделать, вы можете либо использовать подстановку выше, чтобы прочитать выход в переменную, и отрубить переменную с помощью операторов расширения удаления шаблонов bash или использовать какой-то вариант следующего подхода.

Say / usr / local / bin / ipaddr - это следующий сценарий оболочки:

#! /bin/sh
host `hostname` | awk '/address/ {print $NF}'

Вместо использования

/usr/local/bin/ipaddr | read A B C D

, чтобы разбить IP-адрес локального компьютера на отдельные октеты, используйте

OIFS="$IFS"
IFS=.
set -- $(/usr/local/bin/ipaddr)
IFS="$OIFS"
A="$1" B="$2" C="$3" D="$4"

Остерегайтесь, однако, что это изменит позиционные параметры оболочки. Если вам это нужно, вы должны сохранить их, прежде чем делать это.

Это общий подход - в большинстве случаев вам не нужно устанавливать $ IFS на другое значение.

Некоторые другие пользовательские альтернативы включают в себя:

read A B C D << HERE
    $(IFS=.; echo $(/usr/local/bin/ipaddr))
HERE

и, где доступна подстановка процесса,

read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))

8
задан CurryMaster 19 April 2014 в 12:50
поделиться

3 ответа

Это наследование: http://www.teach-ict.com/as_as_computing/ocr/H447/F453/3_3_6/uml/miniweb/pg6.htm

В Java extends явно определяется отношение IS-A.

2
ответ дан aljipa 22 August 2018 в 21:10
поделиться

Это будет диаграмма, это отношение наследования (IS-A):

enter image description here [/g0]

17
ответ дан Angular University 22 August 2018 в 21:10
поделиться

Значение этого отношения: «класс cserver - это класс Thread, но класс Thread не является классом cserver».

inheritance [/g1]

Я рекомендую вам использовать CServer как имя класса, проверьте эти соглашения об именах Java: http://en.wikipedia.org/ вики / Naming_convention_ (программирование) #Java

4
ответ дан carlosvin 22 August 2018 в 21:10
поделиться
Другие вопросы по тегам:

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