linux – 在另一个比较中使用bash比较的结果
发布时间:2020-12-13 22:58:01 所属栏目:Linux 来源:网络整理
导读:我想在随后的比较中使用比较结果.我正在尝试做类似的事情: # $1 - expected result# $2 - actual resultfunction print_result() { if [[ [[ $1 -eq 0 ]] -eq [[ $2 -eq 0 ]] ]]; then # invalid echo "Pass" else echo "Fail" fi} 我可以用更详细的形式获
我想在随后的比较中使用比较结果.我正在尝试做类似的事情:
# $1 - expected result # $2 - actual result function print_result() { if [[ [[ $1 -eq 0 ]] -eq [[ $2 -eq 0 ]] ]]; then # invalid echo "Pass" else echo "Fail" fi } 我可以用更详细的形式获得所需的行为: function print_result() { if [[ (($1 -eq 0) && ($2 -eq 0)) || (($1 -ne 0) && ($2 -ne 0)) ]]; then echo "Pass" else echo "Fail" fi } 但似乎应该有一个更简单的方法? 解决方法
你需要一些产生比较运算符结果的东西作为文本而不是状态返回.那将是
arithmetic expansion:$((表达式)).
另请注意,bash包含数字conditional compound statement – ((expr)) – 这通常比非数字[[…]]条件复合语句更容易用于数值比较. 把它们放在一起,你要找的是: if (( $(($1==0)) == $(($2==0)) )); then 要不就: if (( ($1==0) == ($2==0) )); then 如果你只想知道$1和$2是否为零或两者都是非零,那么你可以使用boolean not(!)总是求值为0或1的事实.因此,下面更简单的表达式是等价的(但是见下面的警告): if ((!$1 == !$2)); then 重要提示:如果您在脚本中使用它,它将正常工作,但在命令提示符下,您需要在!之后放置一个空格!避免它被解释为history expansion字符(除非你关闭历史记录扩展:如果你实际上没有使用历史记录扩展,关闭它并不是一个坏主意.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 无需解密即可加密
- linux – 托管公司应该做些什么准备IPv6?
- linux – 检查两个文件的一部分是否相等
- 如何使用linux flock命令来防止其他根进程删除文件?
- Linux(CentOS)启动时自动执行脚本(rc.local)
- linux – 关于cgroup交换限制的docker警告,memory.use_hier
- 搜索引擎命令site, intitle, inurl,分别代表什么意思?怎么用
- linux-kernel – 如何写入VGA内存(不是视频缓冲区,内存)在L
- Linux性能优化实战:Linux 磁盘I/O是怎么工作的(下)(25)
- linux – 为什么我的sed命令在使用变量时失败了?