2016-07-13 1 views
-1

Я получаю сообщение об ошибке строка 8: [: N: целое выражение ожидается. Я попытался удалить «» в $ userManuf и изменение = к == и я все еще получаю ошибку. Что мне делать? Благодарястрока 8: [: N: целочисленное выражение ожидается

function manuf { 
echo -n "Manufacturer: " ; read userManuf 
varManuf=$(mysql -D snipeit -e "SELECT count(id) FROM manufacturers;") 
countManuf=$(echo $varManuf | awk '{print $2}') 

if [ $userManuf -ne 0 ] && [ $userManuf -le $countManuf ]; then 
    assetModelManuf=$userManuf 
elif [ "$userManuf" = "n" ] || [ "$userManuf" = "N" ]; then 
    echo -n "Type new manufacturer name: " ; read userNewManuf 
    assetModelManuf=$userNewManuf 
else echo "Try again!" && manuf 
fi 
} 
+0

Необходимо указать, какой язык это. Использовать теги. – Laurel

+0

Спасибо за напоминание, его скрипт bash, и я новичок в этом. Да, я читал о написании условных выражений, а также о сравнении –

ответ

2

ошибка происходит, когда $userManuf расширяется до N, но вы пытаетесь использовать его в качестве операнда с целого оператора -ne. Самым простым способом исправить было бы проверить, что она имеет числовое значение первого (а затем использовать арифметическое утверждение для упрощения сравнения):

if [[ $userManuf =~ [0-9]+ ]] && ((0 < userManuf && userManuf <= countManuf)); then 
    assetModelManuf=$userManuf 
elif [[ $userManuf = [nN] ]]; then 
    read -p "Type new manufacturer name: " assetModelManuf 
else 
    echo "Try again!" && manuf 
fi 

Возможно, вы также хотите использовать while петлю вместо вызова manuf рекурсивно. Я оставлю это как упражнение (или будущий вопрос, если необходимо).

+0

Большое спасибо @chepner, я попытаюсь изучить ** сделать while ** loop на некоторое время. Не могли бы вы рассказать о разнице в использовании ** [**/** (** и ** [[**/** ((** или ссылку на сайт?) Спасибо! –

+0

@PauloBernardo BashFAQ статья о [ (включая '[]' и '[[]]')] (http://mywiki.wooledge.org/BashFAQ/031), а другой - в [арифметике оболочки (включая '(()))) (http://mywiki.wooledge.org/ArithmeticExpression). –

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

  • Нет связанных вопросов^_^