2013-12-09 2 views
1

У нас есть переменная со значением в ней. Мое требование, если длина переменной больше 0 (ноль) делать что-то еще делают другоеНеобходимо проверить длину переменной и выполнить соответствующее действие в unix

Шаг1: У меня есть переменная с некоторым значением сказать

abc="asdfg" 

Шаг2: Определите длину из переменная

xyz=`echo ${#abc}` 

Шаг 3: Теперь я использую цикл, если определить, является ли переменная имеет значение больше 0

if [[$xyz -gt 0]]; then 
    echo "success" 
    else 
    echo "fail" 
    fi 

У меня возникла проблема на шаге 3. Это не дает мне успешного сообщения. нужна помощь

ответ

1
if [[$xyz -gt 0]]; then 

должно быть:

if [[ $xyz -gt 0 ]]; then 

Вам нужно пространство между кронштейнами и параметрами.

+0

Вы правы сейчас. Спасибо –

+0

Пожалуйста, еще раз взгляните на решения от @abasterfield: '[-n ...]' и @HermanTorjussen '(($ {# ...}))'. Они выполняют тест по фактической переменной, делая ее более кратким. –

1

Вы можете сделать это легко, как это:

VAR="" 
if [ "$VAR" ]; then echo Full; fi 
VAR="a" 
if [ "$VAR" ]; then echo Full; fi 
Full 

Вы отсутствуют некоторые пробелы вокруг ваших квадратных скобках.

+0

Теперь вы правы. Спасибо вам –

+0

Я пытался показать вам, что вам не нужно сначала разбираться. Если вы просто проверите сама строку (а не ее длину), вы получите тот же результат, и это будет проще. –

+0

интересный !! позвольте мне проверить это –

2

Вы можете проверить, является ли переменная не нулевой длины с -n

if [ -n $abc ]; then 
echo "success" 
fi 
1

Короткое и быстрое решение, чтобы сделать это, чтобы использовать ${#var} непосредственно в тесте, если-:

if ((${#abc})); then 
    # ... 
fi 

Это удаляет ненужную команду-подзапись, которая у вас есть, и проверяет непосредственно на длину. Если длина равна нулю, тест не выполняется.

+0

модный .. позвольте мне попробовать это –

Смежные вопросы