LINUX.ORG.RU

Краткая и обычная форма записи конструкций в Bash

 ,


0

1

Ищу полный список конструкций Bash-скрипт, имеющих обычную и краткую форму записи. Желательно с примерами обоих. В руководстве приводятся только краткие формы.

Пока знаю что обе формы есть в циклах, ветвлениях и функциях.

Что имеется ввиду? Пример.

Краткая форма:

for name [ [in [words …] ] ; ] do commands; done

Обычная форма:

for name in words
do
    commands
done

Что такое «Краткая и обычная форма записи конструкций»? if-then-fi против if-then-else-fi, или что имеется ввиду?

gremlin_the_red ★★★★ ()
Ответ на: комментарий от dober

Там предлагается что-то скачать. Там есть то что я привел в примере?

shkolnik_2022 ()
Ответ на: комментарий от gremlin_the_red

Смысл один, форма разная. Ее еще называют компактная. Как по мне, она только запутывает новичков. Она предлагает все писать в одну длинную лапшу, да еще и с кучей знаков «;» впридачу.

Проблема в том, что обычная форма это какая-то недокументированная возможность языка. Откуда я знаю, что так можно писать, если в примерах официального руководства приведена только компактная?

Обычная форма часто встречается в русскоязычных статьях по башу, видимо не зря, новичкам она и правда понятнее.

shkolnik_2022 ()

Чьорт, школьник из будущего пишет! Может в 2022 году уже и есть разница, я в начале 20-го застрял.

filosofia ()
Ответ на: комментарий от filosofia

Точка с запятой и перевод строки в шелле — синонимы.

Спасибо, не знал… Почему-то встречал в статьях по башу понятие компатной формы конструкций, вот и решил уточнить.

Нет никаких кратких и полных записей.

И в других ЯП таких понятий нет?

shkolnik_2022 ()
Ответ на: комментарий от filosofia

Нет никаких кратких и полных записей.

Но вообще, по идее есть. Я даже пример привел. Если можно представить одну и ту же конструкцию в виде 2х разных форм, значит как бы есть… Просто, если тело цикла довольно большое, и состоит из множества команд, то компактная форма записи становится просто нечитабельна.

shkolnik_2022 ()
Ответ на: комментарий от shkolnik_2022

Если можно представить одну и ту же конструкцию в виде 2х разных форм, значит как бы есть

Тогда держите третью форму:

#--------.
          \
for        \
 i          \
  in         \
   1          \
    2          \
   3           ;\
  do           :
 echo $i       ;
done           ;
               :
################
Rootlexx ★★ ()
Ответ на: комментарий от Rootlexx

Форма записи «плавник акулы», покрашеная в цвет фона — +3ооо руб. :-D

bormant ★★★★★ ()
Ответ на: комментарий от shkolnik_2022

И в других ЯП таких понятий нет?

Да причём тут вообще другие ЯП? Вы до сих пор не поняли, что запись в квадратных скобках означает, что этого может не быть для обозначения разных типов использования условий в цикле и потому при записи по строкам вместо ";" будет неправильно, так как будет означать, что если «этого нет» то «наверное надо писать пустую строку»? А когда в одну строку, то всё получается правильно и не вызывает у нормальных людей вопросов. Когда пишут документацию, то вначале описывают все возможные случаи, а только потом, если очень надо, то приводят реальный пример, который скушает программа, и он начинается словами «например».

vodz ★★★★★ ()
Последнее исправление: vodz (всего исправлений: 1)
Ограничение на отправку комментариев: только для зарегистрированных пользователей