我要求用戶輸入一個數字,如果數字大於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給出的算術比較可以防止用戶輸入數字以外的內容。