2013-08-12 114 views
1

如何從shell中的整數中刪除負號?Shell腳本刪除負整數

diff=-234;我們如何製作diff=234

我試着用

if [ $diff -lt 0 ] 
then 
    diff=$(expr $diff \* -1) 
fi 

,但是這是行不通的。

+0

我剛剛測試過你的代碼,因爲它對我來說看起來是正確的,它的工作方式和預期一樣。所以你的問題必須在腳本的其他地方。 – DarkDust

回答

1

使用shell算術語法確定數字是否爲負值,如果是,則乘以-1以獲得正值。

if ((diff < 0)); then let diff*=-1; fi 

例子:

$ diff=-42 
$ if ((diff < 0)); then let diff*=-1; fi 
$ echo $diff 
42 
3

你可以把值作爲一個字符串或一個數字,如你所願。如果你把它當作一個字符串,你不必做數字運算:

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" 

等等。