1

シェルで整数からマイナス記号を削除するにはどうすればよいですか?

言うdiff=-234; どのように作ることができdiff=234ますか?

で試しました

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

しかし、これは機能していません。

4

2 に答える 2

3

必要に応じて、値を文字列または数値として扱うことができます。文字列として扱う場合、数値演算を行う必要はありません:

diff=-234
if [ "$diff" -lt 0 ]
then diff=${diff#-}
fi
echo "$diff"

これにも使用できますexprが、シェルで実行する代わりに外部プロセスを呼び出します。

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"

など。

于 2013-08-12T11:00:50.357 に答える