第 8 行:[: N: 预期的整数表达式
line 8: [: N: integer expression expected
我收到错误 第 8 行:[: N: 整数表达式预期 。我尝试删除 " " 中的 $userManuf 并将 = 更改为 == 但我仍然收到错误。我应该怎么办?谢谢
function manuf {
echo -n "Manufacturer: " ; read userManuf
varManuf=$(mysql -D snipeit -e "SELECT count(id) FROM manufacturers;")
countManuf=$(echo $varManuf | awk '{print }')
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
}
当 $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
。我会把它留作练习(或如有必要,作为未来的问题)。
我收到错误 第 8 行:[: N: 整数表达式预期 。我尝试删除 " " 中的 $userManuf 并将 = 更改为 == 但我仍然收到错误。我应该怎么办?谢谢
function manuf {
echo -n "Manufacturer: " ; read userManuf
varManuf=$(mysql -D snipeit -e "SELECT count(id) FROM manufacturers;")
countManuf=$(echo $varManuf | awk '{print }')
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
}
当 $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
。我会把它留作练习(或如有必要,作为未来的问题)。