2014-11-25 77 views
0

我要求用户输入一个数字,如果数字大于2,那么我想将字符串-n添加到该数字。这里是我的代码:添加一个字符串的数字变量

read -p "Enter a number " result_sort 
if [ $result_sort >2 ]; then 

    result_sort = $result_sort + " -n" 

fi 

echo "$result_sort" 

,我发现了错误:command not found

回答

1

您的代码应该是这样的:

read -p "Enter a number " result_sort 
if [ $result_sort -gt 2 ]; then 

    result_sort=$(echo "$result_sort -n") 

fi 

echo "$result_sort" 

有两个错误:

  1. test实用程序([)您使用不接受<>具有更大和更小。这些字符是shell中的重定向字符(请参阅I/O Redirection)。即使$result_sort小于2,您在if子句中的语句始终为真。您正在将该命令[ $result_sort ]的结果写入名为2的文件。

  2. 两个字符串的连接不能以你的方式完成。

1

试试这个

result_sort=`echo "${result_sort} -n"` 

应该有result_sort和 “=” 号之间没有空格。在你的情况下,由于空间的原因,它将result_sort标识为命令并试图解释它。

1

您可以在BASH做到这一点:

read -p "Enter a number " result_sort 

((result_sort>2)) && result_sort+=" -n" 
1

结果可以通过连接变量的字符串值简单地完成:

read -p "Enter a number " result_sort 

[ "$result_sort" > 2 ] && 
result_sort="${result_sort}-n" 

echo "$result_sort" 

护具保护变量可以防止歧义。同样使用anubhava给出的算术比较可以防止用户输入数字以外的内容。