Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как правильно применять “&&” и “;” ?  (Прочитано 2666 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
2015 Dec 23; 09:46 AM; Oakville, ON, Canada.

— Я программистом не являюсь, но тем не менее иногда что-то там небольшое в виде скрипта пытаюсь изобразить :)!
— Я естественно прочитал что:
&& → Двойной амперсанд: выполнить список, если программный конвейер отработал успешно…
;  → Точка с запятой: завершает программный конвейер…
— И на английском языке я приблизительно тоже прочитал.
— Попробовал выполнить вот такие команды т.е. удалял учебную директорию со всеми файлами:
Код: (bash) [Выделить]
rm -rf 1512Dec230924 && mkdir 1512Dec230924
rm -rf 1512Dec230924; mkdir 1512Dec230924
— На результат применение “&&” или  “;” в данном случае не влияет.

— А как правильно? И что в каких случаях более предпочтительно?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Как правильно применять “&&” и “;” ?
« Ответ #1 : 23 Декабря 2015, 17:52:43 »
adawdp, если ппервая команда завершилась с ошибкой, то && прервёт, ; продолжит
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Как правильно применять “&&” и “;” ?
« Ответ #2 : 23 Декабря 2015, 18:12:44 »
  • && → Двойной амперсанд: Выполнит команду следующую за ним если предшествующая ему завершилась с кодом 0 (без ошибок)
  • || → Двойная вертикальная линия: Выполнит команду следующую за ним если предшествующая ему НЕ завершилась с кодом 0 (с ошибкой)
  • ; → Точка с запятой: Просто выполнит команду следующую за ним команду, без всяких условий. Зачастую применяется для записи в 1 строку команд располагаемых в скрипте на отдельных строках.
Пример:if [ a == b ]
then
echo "Match"
else
echo "Not match"
fi
будучи вызванной из истории принимает видif [ a == b ]; then echo "Match"; else echo "Not match"; fiЭта же функция может быть записана[ a == b ] && echo "Match" || echo "Not match"
« Последнее редактирование: 23 Декабря 2015, 19:22:44 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как правильно применять “&&” и “;” ?
« Ответ #3 : 23 Декабря 2015, 18:49:29 »
за
Цитировать
rm -rf 1512Dec230924; mkdir 1512Dec230924
это если папка есть (и удалить) или нету, всё рввно создать.
ничего.

если rm тишина время, лучше
mv a a,bak
rm -rf a.bak &
mkdir a
это быстро.
« Последнее редактирование: 23 Декабря 2015, 19:54:19 от victor00000 »
Wars ~.o

adawdp

  • Автор темы
  • Гость
Re: Как правильно применять “&&” и “;” ?
« Ответ #4 : 23 Декабря 2015, 19:34:15 »
2015 Dec 23; 11:34 AM
— Спасибо всем, я понял различия и особенности применения!

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Как правильно применять “&&” и “;” ?
« Ответ #5 : 23 Декабря 2015, 21:29:40 »
Дело не в операторах “&&” "||" “;”
Просто rm с параметром -f - всегда возвращает 0 (true)
Пример:
rm -rf Non_exist_dir_name; echo $?rm -r Non_exist_dir_name; echo $?

adawdp

  • Автор темы
  • Гость
Re: Как правильно применять “&&” и “;” ?
« Ответ #6 : 24 Декабря 2015, 16:46:50 »
2015 Dec 24; 08:46 AM; Oakville, ON, Canada.

— Понимаете, Cxms, фундаментальных знаний по данному вопросу у меня нет, я просто когда что-то там в виде скрипта “пишу” :) , поступаю как китайские конструкторы при копировании чужой техники.

— Иногда копирование происходит успешно, иногда техника не взлетает если это был “самолёт” или тонет если это была “подводная лодка”.

— А для примера я использовал первую попавшуюся команду, которую я на память знаю :)!

Спасибо, ещё одну крупинку фундаментальных знаний я получил!

 

Страница сгенерирована за 0.074 секунд. Запросов: 26.