bea*_*mit 59 shell bash arithmetic
我正在 bash 中进行整数比较(试图查看用户是否以 root 身份运行),我发现了两种不同的方法:
双等于:
if [ $UID == 0 ]
then
fi
Run Code Online (Sandbox Code Playgroud)
-eq
if [ $UID -eq 0 ]
then
fi
Run Code Online (Sandbox Code Playgroud)
我知道在 bash 中没有 >= 或 <=,只有 -ge 和 -le,那么为什么有一个==if-eq呢?
比较双方的方式有区别吗?
gee*_*aur 73
==是 的bash特定别名=,它执行字符串(词法)比较而不是-eq数字比较。(这是 Perl 的倒退:字式运算符是数字,符号运算符是词法。)
tox*_*lot 13
详细说明博洛万的回答......
字符串没有>=或<=比较运算符。但是您可以将它们与((...))算术命令一起使用来比较整数。
如果您在内部使用它们,您还可以使用其他字符串比较运算符(==, !=, <, >, but not =)来比较整数((...))。
例子
[[ 01 -eq 1 ]]并(( 01 == 1 ))做整数比较。两者都是真的。[[ 01 == 1 ]]并[ 01 = 1 ]做字符串比较。两者都是假的。(( 01 -eq 1 ))并(( 01 = 1 ))会返回一个错误。注意:并非所有 shell 都支持[[...]]双括号语法和双括号语法((...))。
如果要进行整数比较,最好使用 (()),也可以使用 >= 等。
例子:
if (( $UID == 0 )); then
echo "You are root"
else
echo "You are not root"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90638 次 |
| 最近记录: |