1
如何從shell中的整數中刪除負號?Shell腳本刪除負整數
說diff=-234
;我們如何製作diff=234
?
我試着用
if [ $diff -lt 0 ]
then
diff=$(expr $diff \* -1)
fi
,但是這是行不通的。
如何從shell中的整數中刪除負號?Shell腳本刪除負整數
說diff=-234
;我們如何製作diff=234
?
我試着用
if [ $diff -lt 0 ]
then
diff=$(expr $diff \* -1)
fi
,但是這是行不通的。
使用shell算術語法確定數字是否爲負值,如果是,則乘以-1
以獲得正值。
if ((diff < 0)); then let diff*=-1; fi
例子:
$ diff=-42
$ if ((diff < 0)); then let diff*=-1; fi
$ echo $diff
42
你可以把值作爲一個字符串或一個數字,如你所願。如果你把它當作一個字符串,你不必做數字運算:
diff=-234
if [ "$diff" -lt 0 ]
then diff=${diff#-}
fi
echo "$diff"
您可以使用expr
這個太,但調用外部程序,而不是在shell做的:
diff=-234
if [ "$diff" -lt 0 ]
then diff=$(expr "$diff" : '^-\(.*\)')
fi
echo "$diff"
然後你就可以用數字對待它,在許多不同的方式,包括:
diff=-234
if [ "$diff" -lt 0 ]
then ((diff *= -1))
fi
echo "$diff"
您還可以修改條件:
diff=-234
[ "$diff" -lt 0 ] && ((diff *= -1))
echo "$diff"
diff=-234
[[ "$diff" < 0 ]] && ((diff *= -1))
echo "$diff"
diff=-234
(("$diff" < 0)) && ((diff *= -1))
echo "$diff"
diff=-234
((diff < 0)) && ((diff *= -1))
echo "$diff"
diff=-234
[[ "$diff" < 0 ]] && diff=${diff#-}
echo "$diff"
等等。
我剛剛測試過你的代碼,因爲它對我來說看起來是正確的,它的工作方式和預期一樣。所以你的問題必須在腳本的其他地方。 – DarkDust