В чем разница?
mkdir 123 $$ mkdir 321
mkdir 123 | mkdir 321
Вторая команда выполняется в месте с первой или после того как выполнится первая команда?
Командная строка (&& |)
В первом случае вторая команда будет выполнена только после успешного завершения первой. Во втором случае мы видим конвейер, когда результаты выполнения первой команды передаются в качестве аргументов для второй. В этом контексте команда mkdir 123 | mkdir 321 не имеет смысла, поскольку в общем случае результаты выполнения команды mkdir не выводятся. Хотя может быть вариант, что вы просто перепутали | и || - это совершенно разные вещи.
спасибо. объясните еще что означает ||? есть ли еще какие то спецсимволы для выполнения нескольких команд одной строкой?
Запись command1 || command2 означает, что вторая команда выполняется в случае, если первая команда не может быть успешно выполнена, аналог логического "или". А подробно об операторах и всроенных командах bash можно прочесть здесь: http://gazette.linux.ru.net/rus/articles/abs-guide
а попробовать влом?
mkdir 123 $$ mkdir 321создаст директории:
123
mkdir
321
и директорий с pid того шелла, из которого запущена команда.
mkdir 123 | mkdir 321создаст директории 123 и 321. конвейер в данном случае вообще ничего не сделает
покормил
Kondrat, спасибо.
lava, команды делают одно и тоже (создают 2 директории). mkdir только в качестве примера. интересовало различие.
хм. а что делать если первая команда принимает $$ не как разделитель а как параметр и выдает ошибку синтаксиса?