LinuxForum.Fans
Тема

Командная строка (&& |)

Автор: kennedy 6 сообщений 3156 просмотров
#8605

В чем разница?
mkdir 123 $$ mkdir 321
mkdir 123 | mkdir 321

Вторая команда выполняется в месте с первой или после того как выполнится первая команда?

#8608

В первом случае вторая команда будет выполнена только после успешного завершения первой. Во втором случае мы видим конвейер, когда результаты выполнения первой команды передаются в качестве аргументов для второй. В этом контексте команда mkdir 123 | mkdir 321 не имеет смысла, поскольку в общем случае результаты выполнения команды mkdir не выводятся. Хотя может быть вариант, что вы просто перепутали | и || - это совершенно разные вещи.

#8609

спасибо. объясните еще что означает ||? есть ли еще какие то спецсимволы для выполнения нескольких команд одной строкой?

#8611

Запись command1 || command2 означает, что вторая команда выполняется в случае, если первая команда не может быть успешно выполнена, аналог логического "или". А подробно об операторах и всроенных командах bash можно прочесть здесь: http://gazette.linux.ru.net/rus/articles/abs-guide

#8622

а попробовать влом?

text
mkdir 123 $$ mkdir 321

создаст директории:
123
mkdir
321
и директорий с pid того шелла, из которого запущена команда.

text
mkdir 123 | mkdir 321

создаст директории 123 и 321. конвейер в данном случае вообще ничего не сделает


покормил

#8697

Kondrat, спасибо.
lava, команды делают одно и тоже (создают 2 директории). mkdir только в качестве примера. интересовало различие.

хм. а что делать если первая команда принимает $$ не как разделитель а как параметр и выдает ошибку синтаксиса?

Войдите или зарегистрируйтесь, чтобы ответить.