Как мне сравнить, если моя переменная содержит символ новой строки в сценарии оболочки - PullRequest
1 голос
/ 02 апреля 2012

У меня есть скрипт, в котором у меня есть строка, которая помещает третью строку, извлеченную из моей переменной, следующим образом:

variable=`sed -n '3 p' /home/nmsadm/abc.txt`

Так что variable содержит это значение, которое находится в третьей строке abc.txt. В моем случае это будет одной строкой слова или пустой / пустой строкой.

Как я могу сравнить переменную в сценарии оболочки, чтобы узнать, пустая ли это строка? echo $variable принес мне пустую строку.

Какое сравнение мне нужно здесь, чтобы Я уверен, что это пустая строка? Примерно так:

if [ "$variable" = "comparison" ]; then

Ответы [ 3 ]

6 голосов
/ 02 апреля 2012

Пусто или не определено:

if [ -z "${variable-}" ]

Одной новой строки:

if [ "${variable-}" = $'\n' ]

Не определено:

if [ "${variable+defined}" != defined ]

Обратите внимание, последняя команда не противоположность

if [ "${variable-undefined}" = undefined ]

Чтобы понять почему, попробуйте сначала запустить variable=undefined. "${variable+defined}" имеет только два возможных значения: пустая строка или defined.

2 голосов
/ 02 апреля 2012
read str
if [ ${#str} -eq 0 ]       #this can been used to decide whether str is empty or not 
   then
        echo "empty"
else
    echo "not empty"
fi
1 голос
/ 02 апреля 2012

Следующая команда сохранит длину переменной в var_length.

var_length=$(echo ${#variable})

если $ var_length больше или равно 1, переменная $ является строкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...