在 Bash 中否定多个条件

2023-12-09

我意识到这是一个简单的问题,但由于 bash 中严格的语法要求,我发现很难得到答案。我有以下脚本:

if ! [ [ -z "$1" ] || [ -z "$2" ] ]; then
  echo "both arguments are set!"
fi

当我不带参数运行它时,我得到以下输出:

./test: line 3: [: -z: binary operator expected 
both arguments are set!

我不期待任何输出 - 两个参数都没有设置。我究竟做错了什么?


方括号不是分组结构bash. [只是一个别名test命令,参数被正常解析。和||是分隔命令的 shell 运算符。

如果你想对多个命令进行分组,你可以使用()子 shell 语法。

if ! ([ -z "$1" ] || [ -z "$2" ]);

or the { }分组语法:

if ! { [ -z "$1" ] || [ -z "$2" ]; };

或者您可以使用一次调用test,其内置-o操作员:

if ! [ -z "$1" -o -z "$2" ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Bash 中否定多个条件 的相关文章

  • 如何将长选项与 Bash getopts 内置一起使用?

    我正在尝试解析 tempBash getopts 的选项 我这样调用我的脚本 myscript temp foo bar someFile 这是我用来解析选项的代码 while getopts temp shots o option do
  • 伊迪德信息

    重新定义问题 有什么方法可以获取所连接显示器的序列号吗 我想收集显示器的Eid信息 当我使用 logverbose 选项运行 X 时 我可以从 xorg 0 log 文件中获取它 但问题是 如果我切换显示器 拔出当前显示器 然后插入另一个显
  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b
  • 此 bash 命令在 Makefile 中未正确运行

    在 Makefile 里面我有这样的 release version poetry version cut f2 d echo release version 如果我运行 我的终端中的语句将毫无问题地运行 gt version poetry
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 目录 * 和文件顺序

    我需要将目录中的所有文件连接到一个文件 但具有指定名称的文件必须位于输出的顶部 只是在做cat gt result将按字母顺序连接所有文件 有什么办法告诉猫放置文件vars css或任何其他输出的开头 现在我只是重命名文件需要首先000 f
  • 如何显示 zsh 函数定义(如 bash“type myfunc”)?

    如何在 zsh 中显示函数的定义 type foo没有给出定义 在bash中 bash function foo echo hello bash foo hello bash type foo foo is a function foo e
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • .profile 无法从 Mac 终端运行

    我有一个 profile 文件 我正在终端中读取并使用别名 但在某些时候 别名由于没有明确的原因而停止工作 其他命令仍在工作 为了快速修复 我删除了 rm 并在用户目录中重新创建了 profile 文件 我可以看到 至少在该目录中没有 ba
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的
  • 将相对符号链接转换为绝对符号链接

    如何在 bash 中递归地将相对符号链接转换为绝对符号链接 ln sf readlink f link link
  • 匹配模式后添加行[重复]

    这个问题在这里已经有答案了 我有一个文件说test具有以下值 Linux Solaris Fedora Ubuntu AIX HPUX 如何在匹配 AIX 的行后面添加一行系统主机名 如果我做 echo hostname gt gt tes
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点

随机推荐

  • 如何以编程方式触发 UITableViewCell editActions? [复制]

    这个问题在这里已经有答案了 我在我的 tableviewcell 上做了一些自定义编辑操作 当我滑动时它工作正常 但我想知道当我点击单元格时是否有任何方法可以触发这些操作 另外 我看到很多人回答类似的问题只是 tableView setEd
  • 使用 fstream 加载二进制文件

    我正在尝试使用加载二进制文件fstream通过以下方式 include
  • 当 x 轴将刻度线向右移动一位时,散景补丁图上的日期

    我正在尝试调整啤酒厂的例子 http docs bokeh org en latest docs gallery stacked area html 以满足我的需要 我想要的一件事是在 x 轴上显示日期 我做了以下事情 timesteps
  • htaccess 用于 Laravel 的域和子域

    我正在尝试弄清楚如何设置域和子域以在共享托管帐户上工作 这是一个 Laravel 5 1 应用程序 我的访问文件是 Options SymLinksIfOwnerMatch RewriteEngine On RewriteRule inde
  • dotnet 与 Angular cli 对比

    我已经阅读了许多 Angular 2 4 教程 希望能够积累足够的信心来致力于构建一个项目 他们中的大多数使用 Angular cli 来生成入门模板 就在几天前 我偶然发现了一个使用 dotnet cli 解释 NET Core Angu
  • PHP 中 pthread 的问题

    我在 PHP 中遇到 pthreads 问题 当我启动 apache 时 我看到这样的错误 php exe Entry point not found The procedure entry point was not found zend
  • 设置 matplotlib 3D 绘图的刻度颜色

    如果我有一个 3D matplotlib 图 Axes3D对象 如何更改刻度线的颜色 我弄清楚了如何更改轴线 刻度标签和轴标签的颜色 显而易见的解决方案 使用ax tick params axis x colors red 仅更改刻度标签而
  • 将数据从内容可编辑 div 复制到隐藏输入以进行表单提交?

    我想从我的 contenteditable div 中正确复制我的数据 以便我可以将其提交到我的数据库 这将用于类似于 Facebook 的帖子 我的代码如下所示 div class isPlaceholder div 输入一些数据后 ht
  • 外部链接到选项卡、选项卡未更改、Bootstrap 3.3.5

    我的问题与这些问题非常相似 我试图使用链接来更改选项卡 但该链接仅更改选项卡内容 而不更改活动选项卡 最相似 Bootstrap 使用 url 链接到选项卡 非常相似 在 Bootstrap 3 中使用 onclick 显示带有外部链接的选
  • 如何知道android中的音频何时开始播放

    在我的应用程序中 我想在用户启动时获取音乐播放器的开始时间和停止时的结束时间 我不想在我的应用程序中启动任何音乐播放器 我只想跟踪设备中的用户活动 所以我希望我的应用程序在用户开始播放音乐时收到任何通知 我是否对音乐播放器启动和停止有任何意
  • Perl 按散列中的值对散​​列进行排序

    我认为我的想法是正确的 但我搞砸了一些语法 约定 因为我收到错误 全局符号 timeHash需要显式包名称 Code foreach key sort hashValueDescendingNum keys timeHash print t
  • 图像/按钮上的文字

    如何使用 html css 在图像 按钮上制作文本 例如 我有一个按钮 登录按钮 我希望将文本 登录 放置在该按钮上 文本应位于图像 按钮的中心 您可以简单地设置background image相关财产button 或其他元素 如果您使用代
  • 在Java中将字符串转换为双精度型

    我怎样才能转换String例如 12 34 to a double在Java中 您可以使用Double parseDouble 转换一个String to a double String text 12 34 example String
  • window.history.pushState 不会回到历史记录中

    我在尝试 History pushstate 事件时遇到了一些问题 我将其设置为页面的 url 将是通过 AJAX 加载的页面的实际 URL 并且效果很好 我知道它应该自动创建历史记录 加载之前加载的页面 不幸的是 帽子并没有发生 当我点击
  • 密码存储,hash() 与 sha-512 或 crypt() 与河豚 (bcrypt)?

    这是我当前在 PHP SQL 项目中的密码哈希过程 从 dev urandom 中获取 512 位的每用户盐 除了最终哈希值之外 还存储在用户的数据库记录中 从 dev urandom 中取出存储在文件系统中的 512 位 pepper 这
  • 从 $_GET/$_POST 获取信息并将其保存到数据库的做法?

    当涉及到从 get post 获取信息并将信息保存到数据库时 当今的最佳实践是什么 数据是否仍像以前一样进行转义 或者是否还有其他做法 另外 HTMLPurifier 可以用在什么地方呢 我目前正在使用它来过滤富文本 切勿将 GET 中的数
  • 调试 .NET 程序集绑定又名查找使用的 dll 以及原因

    我们在运行时加载的引用 dll 上遇到了一些神秘的版本不匹配问题 错误如 无法加载文件或程序集 X 或其依赖项之一 找到的程序集的清单定义与程序集引用不匹配 HRESULT 异常 0x80131040 有没有办法调试程序集绑定 换句话说 我
  • JQuery 结合 $(document).ready 和 $('DropDown').change 声明

    我想运行一个函数 function myFunction 关于活动 document ready and如果某个下拉菜单发生变化 myDropDown change 有没有一个好的方法来合并这个声明 这样我就不需要两次单独的调用myFunc
  • redactor.js PastePlainText - 但需要按钮来粘贴 html

    我们的大多数客户抱怨从 Word 到我们的 redactor js 富文本编辑器字段的格式设置 我们升级为使用pastePlainText 设置 这似乎效果很好 然而 有些客户仍然需要将 html 粘贴到富文本框中 我们使用插件在工具栏上添
  • 在 Bash 中否定多个条件

    我意识到这是一个简单的问题 但由于 bash 中严格的语法要求 我发现很难得到答案 我有以下脚本 if z 1 z 2 then echo both arguments are set fi 当我不带参数运行它时 我得到以下输出 test