Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中将if语句压缩为一行_Bash_Shell - Fatal编程技术网

在bash中将if语句压缩为一行

在bash中将if语句压缩为一行,bash,shell,Bash,Shell,我有以下脚本: #/usr/bin/bash arch=`uname-p` 如果[“$arch”==“x86_64”]] 然后 回应“是” 其他的 回应“否” fi 有没有一种方法可以在命令提示符下将其作为一个简短的单行程序编写,而不是将其作为脚本编写。比如: $ test uname -p == "x86_64" ? "Yes" : "No" 尽管我不确定bash中的三元用法(?)。您可以使用以下语句,如果语句的计算结果为True

我有以下脚本:

#/usr/bin/bash
arch=`uname-p`
如果[“$arch”==“x86_64”]]
然后
回应“是”
其他的
回应“否”
fi
有没有一种方法可以在命令提示符下将其作为一个简短的单行程序编写,而不是将其作为脚本编写。比如:

$ test uname -p == "x86_64" ? "Yes" : "No"

尽管我不确定bash中的三元用法(?)。

您可以使用以下语句,如果语句的计算结果为
True
,则
&&
部分将运行,否则
|
将运行:

[ "`uname -p`" = "x86_64" ] && echo "Yes" ||  echo "No"

我会推荐
“$(uname-p)”
而不是backticks-等效的,但可能更可读…@DavidC.Rankin——谢谢,这主要是为了可读性,还是还有其他好处?就是可读性,而且不太容易被新的脚本编写者出错。它还创建了一个新的引用上下文,而反勾号不是。同样,这并不完全相同,因为如果第二条语句失败,第三条语句将被执行,请参阅。@BenjaminW中有一个三元运算符。是的,但这只能生成数字结果,而不能生成“是”和“否”之类的字符串。