Команды, продолжающиеся в нескольких строках

#bash

#удар

Вопрос:

У меня есть следующее с amp;amp; И. || Поскольку я хочу иметь строки в пределах 80 символов, как я могу разделить это на разные строки? Всегда ли нужен персонаж продолжения ?

 (( cval != 1 )) amp;amp; echo "$k" || { echo "" ; printf '%sn' "${desc[@]}" ; }  

Комментарии:

1. Вы можете разделить команду в любом месте, добавив обратную косую черту, а затем введя разрыв строки.

2. Кроме того, если вы вставляете разрыв строки где-то, где команда не может закончиться (например, после amp;amp; или || ), обратная косая черта не нужна.

3. Не используйте amp;amp; и || вместе, как это. Используйте if инструкцию.

4. Хрупкость такой конструкции-это то, что привело Python, например, к внедрению a if b else c в качестве надежной замены b and a or c .

5. хрупкость в каком смысле?

Ответ №1:

как я могу разделить это на разные строки?

Так что просто буквально ставьте новые строки после amp;amp; и || и после { и вместо или после ; . Вы также можете размещать комментарии в отдельных строках, если хотите.

 (( cval != 1 )) amp;amp;  echo "$k" ||  {  echo ""  printf '%sn' "${desc[@]}"  }  

Но на самом деле amp;amp; || они сбивают с толку. Настоятельно рассмотрите вариант «если». И echo "" — просто echo .

 if (( cval != 1 )); then  echo "$k"  else  echo  printf '%sn' "${desc[@]}"  fi  

Комментарии:

1. Не просто сбивающая с толку, но и хрупкая. Люди, использующие a amp;amp; b || c предположение, что b это не может привести к сбою, но если это произойдет, c будет выполнено, даже если a это удастся.