有没有办法做这样的事情

int a = (b == 5) ? c : d;

用Bash?

#1楼

如果条件只是检查是否设置了变量,那么甚至还有一个较短的形式:

a=${VAR:-20}

将要分配给a的值VAR如果VAR被设置,否则将分配给它的默认值20 -这也可以是一个表达的结果。

正如Alex在评论中指出的那样,这种方法在技术上被称为“参数扩展”。

#2楼

[ $b == 5 ] && { a=$c; true; } || a=$d

这将避免在||之后执行该部分 在&&和||之间的代码时偶然发生 失败。

#3楼

这是另一个选项,您只需要指定一次分配的变量,无论您的分配是字符串还是数字都无关紧要:

VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B`

只是一个想法。 :)

#4楼

if [ "$b" -eq 5 ]; then a="$c"; else a="$d"; fi

cond && op1 || op2 在其他答案中建议的cond && op1 || op2表达式有一个固有的错误:如果op1具有非零退出状态,则op2默默地成为结果; 在-e模式下也不会捕获错误。 因此,如果op1永远不会失败,那么该表达式只能安全使用(例如:如果内置或变量赋值没有任何可能失败的操作(如除法和OS调用),则为true )。

注意""引号。 如果$b为空或具有空格,则第一对将防止语法错误。 其他人会阻止将所有空格转换为单个空格。

#5楼

以下似乎适用于我的用例:

例子

$ tern 1 YES NO

YES

$ tern 0 YES NO

NO

$ tern 52 YES NO

YES

$ tern 52 YES NO 52

NO

并可以在如下的脚本中使用:

RESULT=$(tern 1 YES NO)

echo "The result is $RESULT"

燕鸥

function show_help()

{

echo ""

echo "usage: BOOLEAN VALUE_IF_TRUE VALUE_IF_FALSE {FALSE_VALUE}"

echo ""

echo "e.g. "

echo ""

echo "tern 1 YES NO => YES"

echo "tern 0 YES NO => NO"

echo "tern "" YES NO => NO"

echo "tern "ANY STRING THAT ISNT 1" YES NO => NO"

echo "ME=$(tern 0 YES NO) => ME contains NO"

echo ""

exit

}

if [ "$1" == "help" ]

then

show_help

fi

if [ -z "$3" ]

then

show_help

fi

# Set a default value for what is "false" -> 0

FALSE_VALUE=${4:-0}

function main

{

if [ "$1" == "$FALSE_VALUE" ]; then

echo $3

exit;

fi;

echo $2

}

main "$1" "$2" "$3"

linux shell 三元运算符,Bash中的三元运算符(?:)相关推荐

  1. linux shell 三元运算符,语法 - Bash中的三元运算符(?:)

    语法 - Bash中的三元运算符(?:) 有没有办法做这样的事情 int a = (b == 5) ? c : d; 用Bash? 14个解决方案 346 votes ternary operator ...

  2. linux shell 三元运算符,关于语法:Bash中的三元运算符(?:)

    有什么办法可以做这种事吗 int a = (b == 5) ? c : d; 使用BASH? @荷兰语的答案表明,bash确实有类似于"三元运算符"的东西,但是在bash中,这被称 ...

  3. linux命令行使用for循环,小弟我使用过的Linux命令之for - Bash中的For循环

    我使用过的Linux命令之for - Bash中的For循环 我使用过的Linux命令之for - Bash中的For循环 本文链接:http://codingstandards.iteye.com/ ...

  4. Linux循环中累计数据,linux shell 读取for循环中出现难处理的数据之单引号错误实例...

    原语句: #!/bin/bash for test in I don't know if this'll work do echo "work:$test" done 结果: wo ...

  5. linux shell脚本 wget,bash – 在shell脚本中运行wget和其他命令

    以下是编写shell脚本时要使用的一些准则. >使用它们时始终引用变量.这有助于避免误解的可能性. (如果文件名包含空格怎么办?) >不要相信像rm这样的命令上的文件加载.请改用循环. ( ...

  6. linux相等路径,关于linux:如何检查Bash中两条路径是否相等?

    在Bash中检查两条路径是否相等的最佳方法是什么? 例如,给定目录结构 ~/ Desktop/ Downloads/ (symlink to ~/Downloads) Downloads/ photo ...

  7. shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号

    我想从bash shell脚本中运行一个命令,该脚本在单引号和变量中包含单引号和一些其他命令. 如repo forall -c '....$variable'. 在这种格式中,对$进行转义,不展开变量 ...

  8. linux信号传递给进程,bash中的信号处理机制

    Linux 中的信号 信号(Signal)是操作系统中常用的进程通信手段, 主要用来描述特定事件的发生, 进程接收到信号时有以下几种处理方式: 捕获并自定义处理函数: 给signal系统调用传递自定义 ...

  9. linux shell 函数库,bash shell 函数库

    bash shell 函数库ash由自由软件基金会,Inc.版权所有(C) 1989-2011. 语法 bash [options] [file] 描述 Bash是一种与sh兼容的命令语言解释器,它执 ...

最新文章

  1. 400万奖金池,倪光南、邓中翰等顶级学者指导,大手笔芯片比赛邀你参与
  2. 【MM模块】Vendor Consignment 供应商寄售
  3. 栈应用_计算按运算符优先级分布的算式(代码、分析、汇编)
  4. 运维与节能:数据中心绿色运维技术研讨会召开
  5. gtk 主循环函数
  6. ● firewalld.service Loaded: not-found (Reason: No such file or directory)
  7. 知乎运营怎么搞?开展知乎营销的流程和形式
  8. 你一生要知道的74幅世界名画…
  9. POJ 3580 SuperMemo
  10. 线程状态转换图及其5种状态切换
  11. Servlet中ServletConfig接口和ServletContext接口的作用
  12. norflash的操作
  13. 中国房地产还能火多久?
  14. 基于YOLOV3的通用物体检测项目实战---(5)利用DarkNet框架进行YOLOV3模型训练实操(笔记)
  15. ffmpeg压缩视频
  16. 怎么下载和安装 eclipse?
  17. Perl的opendir
  18. 平顶山学院微信缴学费使用说明
  19. M5A78L-M LX3 PLUS 触发不显
  20. H5 实现酷炫水滴效果

热门文章

  1. 51nod - 1204 Parity
  2. 我的工具箱-Office
  3. 语文科计算机培训心得体会,语文培训心得体会(精选3篇)
  4. SAP ABAP 基础知识
  5. JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码
  6. Shiro实现rememberMe功能
  7. 【Vue3+vite+Element-UI Plus 】
  8. 多视图几何笔记(二)射影变换
  9. 字符识别--CRNN+CTC
  10. 电路啸叫的原因????!!!!!