Дефис в именах функций bash

Возможно, вы можете поместить поля в кавычки, что должно указать парсерам csv, что запятые внутри не являются разделителями полей:

sed 's/"/""/g;                         # escape existing " as ""
     s/[[:space:]]*,[[:space:]]*/","/; # replace the first, and the
                                       # whitespace around it with ","

     s/^[[:space:]]*/"/;               # add a " at the start (and
                                       # get rid of whitespace there)

     s/[[:space:]]*$/"/;               # same at the end'
1
30.06.2021, 07:27
1 ответ

Распространенное заблуждение о Bash состоит в том, что имена функций должны следовать тем же правилам, что и переменные. Руководство Bash даже предлагает это :

.

A word consisting solely of letters, numbers, and underscores, and beginning with a letter or underscore. Names are used as shell variable and function names. Also referred to as an identifier.

На самом деле имена функций Bash могут быть почти любыми печатными символами. Например, я могу определить свою собственную пред -инкрементную унарную функцию:

function ++ { (( $1++ )); }

Конечно, любой здравомыслящий человек все равно будет придерживаться рекомендации стандартного именования функций .


Попробуйте написать POSIX -ly (#!/bin/sh), он не будет принимать дефисы с ошибкой:

Syntax error: Bad function name


Заключение

Итак, если вы спросите меня:

  1. Может ли он содержать нестандартные -символы :Может.

  2. Должен ли я использовать его тогда. Определенно нет! Вы нанесете ущерб переносимости, поэтому вам не следует использовать никакие нестандартные имена -. Придерживайтесь POSIX, это отличный способ выработать хорошие привычки.

0
28.07.2021, 11:21

Теги

Похожие вопросы