我要求用户输入一个数字,如果该数字大于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
答案 0 :(得分:1)
试试这个
result_sort=`echo "${result_sort} -n"`
result_sort和" ="之间不应该有空格。标志。在您的情况下,由于空间,它将result_sort标识为命令并尝试解释它。
答案 1 :(得分:1)
您的代码应如下所示:
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子句中的语句也始终为true。您正在将该命令[ $result_sort ]
的结果写入名为2
的文件。
两个字符串的串联不能以你的方式完成。
答案 2 :(得分:1)
您可以在BASH中执行此操作:
read -p "Enter a number " result_sort
((result_sort>2)) && result_sort+=" -n"
答案 3 :(得分:1)
只需连接变量的字符串值即可完成结果:
read -p "Enter a number " result_sort
[ "$result_sort" > 2 ] &&
result_sort="${result_sort}-n"
echo "$result_sort"
大括号保护变量可以防止歧义。同样使用anubhava给出的算术比较可以防止用户输入数字以外的东西。