我要求用户输入一个数字,如果数字大于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
我要求用户输入一个数字,如果数字大于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
您的代码应该是这样的:
read -p "Enter a number " result_sort
if [ $result_sort -gt 2 ]; then
result_sort=$(echo "$result_sort -n")
fi
echo "$result_sort"
有两个错误:
的test
实用程序([
)您使用不接受<
和>
具有更大和更小。这些字符是shell中的重定向字符(请参阅I/O Redirection)。即使$result_sort
小于2,您在if子句中的语句始终为真。您正在将该命令[ $result_sort ]
的结果写入名为2
的文件。
两个字符串的连接不能以你的方式完成。
试试这个
result_sort=`echo "${result_sort} -n"`
应该有result_sort和 “=” 号之间没有空格。在你的情况下,由于空间的原因,它将result_sort标识为命令并试图解释它。
您可以在BASH做到这一点:
read -p "Enter a number " result_sort
((result_sort>2)) && result_sort+=" -n"
结果可以通过连接变量的字符串值简单地完成:
read -p "Enter a number " result_sort
[ "$result_sort" > 2 ] &&
result_sort="${result_sort}-n"
echo "$result_sort"
护具保护变量可以防止歧义。同样使用anubhava给出的算术比较可以防止用户输入数字以外的内容。