linux shell 三元运算符,Bash中的三元运算符(?:)
有没有办法做这样的事情
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中的三元运算符(?:)相关推荐
- linux shell 三元运算符,语法 - Bash中的三元运算符(?:)
语法 - Bash中的三元运算符(?:) 有没有办法做这样的事情 int a = (b == 5) ? c : d; 用Bash? 14个解决方案 346 votes ternary operator ...
- linux shell 三元运算符,关于语法:Bash中的三元运算符(?:)
有什么办法可以做这种事吗 int a = (b == 5) ? c : d; 使用BASH? @荷兰语的答案表明,bash确实有类似于"三元运算符"的东西,但是在bash中,这被称 ...
- linux命令行使用for循环,小弟我使用过的Linux命令之for - Bash中的For循环
我使用过的Linux命令之for - Bash中的For循环 我使用过的Linux命令之for - Bash中的For循环 本文链接:http://codingstandards.iteye.com/ ...
- Linux循环中累计数据,linux shell 读取for循环中出现难处理的数据之单引号错误实例...
原语句: #!/bin/bash for test in I don't know if this'll work do echo "work:$test" done 结果: wo ...
- linux shell脚本 wget,bash – 在shell脚本中运行wget和其他命令
以下是编写shell脚本时要使用的一些准则. >使用它们时始终引用变量.这有助于避免误解的可能性. (如果文件名包含空格怎么办?) >不要相信像rm这样的命令上的文件加载.请改用循环. ( ...
- linux相等路径,关于linux:如何检查Bash中两条路径是否相等?
在Bash中检查两条路径是否相等的最佳方法是什么? 例如,给定目录结构 ~/ Desktop/ Downloads/ (symlink to ~/Downloads) Downloads/ photo ...
- shell变量加单引号sql_关于shell:在Bash中的命令中扩展变量的单引号
我想从bash shell脚本中运行一个命令,该脚本在单引号和变量中包含单引号和一些其他命令. 如repo forall -c '....$variable'. 在这种格式中,对$进行转义,不展开变量 ...
- linux信号传递给进程,bash中的信号处理机制
Linux 中的信号 信号(Signal)是操作系统中常用的进程通信手段, 主要用来描述特定事件的发生, 进程接收到信号时有以下几种处理方式: 捕获并自定义处理函数: 给signal系统调用传递自定义 ...
- linux shell 函数库,bash shell 函数库
bash shell 函数库ash由自由软件基金会,Inc.版权所有(C) 1989-2011. 语法 bash [options] [file] 描述 Bash是一种与sh兼容的命令语言解释器,它执 ...
最新文章
- 400万奖金池,倪光南、邓中翰等顶级学者指导,大手笔芯片比赛邀你参与
- 【MM模块】Vendor Consignment 供应商寄售
- 栈应用_计算按运算符优先级分布的算式(代码、分析、汇编)
- 运维与节能:数据中心绿色运维技术研讨会召开
- gtk 主循环函数
- ● firewalld.service Loaded: not-found (Reason: No such file or directory)
- 知乎运营怎么搞?开展知乎营销的流程和形式
- 你一生要知道的74幅世界名画…
- POJ 3580	SuperMemo
- 线程状态转换图及其5种状态切换
- Servlet中ServletConfig接口和ServletContext接口的作用
- norflash的操作
- 中国房地产还能火多久?
- 基于YOLOV3的通用物体检测项目实战---(5)利用DarkNet框架进行YOLOV3模型训练实操(笔记)
- ffmpeg压缩视频
- 怎么下载和安装 eclipse?
- Perl的opendir
- 平顶山学院微信缴学费使用说明
- M5A78L-M LX3 PLUS 触发不显
- H5 实现酷炫水滴效果