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

«Mod + X» по умолчанию. Это означает, что вы не настроили свои сочетания клавиш на что-то другое.

1
05.03.2020, 13:40
1 ответ

С регулярным выражением:

if [[ $1 =~ ^$'\n'*$ ]]; then
  echo empty or only contains newlines
else
  echo contains non-newline characters 
fi

С подстановочными знаками, вместо прямой проверки наличия только новых строк, проверьте наличие не -символа новой строки:

if [[ $1 == *[^$'\n']* ]]; then
  echo contains non-newline characters 
else
  echo empty or only contains newlines
fi

Или простой путь:

nl='
'
case $1 in
  *[!$nl]*) echo contains non-newline characters;;
  *) echo only contains newlines;;
esac

Для положительного совпадения с подстановочными знаками вам понадобится#extendedglobоператор (эквивалент *оператора регулярного выражения):

set -o extendedglob
if [[ $1 == $'\n'# ]]; then
  echo empty or only contains newlines
else
  echo contains non-newline characters 
fi
1
28.04.2021, 23:21

Теги

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