bash逻辑取反技巧(bool_not函数)

bash函数不支持像其他高级语言一样的高级的返回变量,bash只能返回数值。

bash有bool变量,但是bool操作符号只能存在于[ ... ][[ ... ]]等特定语法结构中

举个例子 bash中,想要对bool变量y取反并赋值给变量x ,这样写x=!$y是不合法的,这种诉求是很常见的

此时 要么放弃bash,比如换成别的脚本语言fish、nushell、zsh等等,或者干脆换成py

但bash比起py也有好的一面,bash比py还简洁

那么bash中到底如何写一个逻辑取反函数呢?

最丑陋的办法 是 返回值让全局变量承载,但这太丑了,如果脚本很多,有重名变量,难以排查,是给自己埋雷。

好一点的办法 用eval实现像c语言中指针的味道,比方下面这个实现:



#!/bin/bash

# fileName: bool_not.sh
#【描述】  bool取反
#【依赖】   
#【术语】 
#【备注】   


_importBSFn "argCntEq2.sh"
function bool_not() {

#断言有两个参数
argCntEq2 $* || return $?

#输入bool值
local inBoolVar=$1
#返回 全局变量名
local outBoolVarName=$2

#取反,放入变量notBoolVar中
local notBoolVar=false; $inBoolVar || notBoolVar=true;
#利用eval将结果局部变量赋值给入参指定的全局变量
eval "$outBoolVarName=$notBoolVar"
}

#使用举例
#source bool_not.sh
# x=true ; bool_not $x "not_x" ; echo $not_x
#   eval执行了 not_x=false
#   变量not_x为false
# y=false ; bool_not $y "not_y" ; echo $not_y
#   eval执行了 not_y=true
#   变量not_y为true



相关推荐

  1. bash逻辑技巧(bool_not函数

    2024-05-01 10:20:03       29 阅读
  2. 逻辑回归的损失函数

    2024-05-01 10:20:03       25 阅读
  3. C 练习实例55-学习使用按位~

    2024-05-01 10:20:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 10:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 10:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 10:20:03       82 阅读
  4. Python语言-面向对象

    2024-05-01 10:20:03       91 阅读

热门阅读

  1. Android Framework 获取所有应用的运行异常情况

    2024-05-01 10:20:03       36 阅读
  2. 在 H5 页面和 uniapp 小程序之间进行数据通信

    2024-05-01 10:20:03       33 阅读
  3. 9、开发基于FemWorkbench的CFD模块

    2024-05-01 10:20:03       28 阅读
  4. Qt:下载和安装

    2024-05-01 10:20:03       29 阅读
  5. 等保课后作业

    2024-05-01 10:20:03       29 阅读
  6. 【蓝桥杯】第十五届蓝桥杯C/C++B组省赛补题

    2024-05-01 10:20:03       33 阅读