Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
If statement Posix标准中的条件句_If Statement_Posix - Fatal编程技术网

If statement Posix标准中的条件句

If statement Posix标准中的条件句,if-statement,posix,If Statement,Posix,在这些日子里,我花了很多时间阅读各种关于脚本编写的文章和指南(大部分是在bash中) 首先想到的一件事是,为了便于移植,最好还是坚持使用POSIX 不管怎样,我不能弄清楚的是制作条件语句的标准方法 我想在这篇文章中忽略test,而是讨论[和[[ 我发现[有点过时,但每个shell都支持它(旧的是/bin/test/的别名,新的是shell本身的一部分)。 另一方面,我发现几乎每一个教程都使用[[,当被问及原因时,原因是“Bash在大多数Linux发行版中是默认的,所以它就像一个标准” 当然,它们

在这些日子里,我花了很多时间阅读各种关于脚本编写的文章和指南(大部分是在bash中)

首先想到的一件事是,为了便于移植,最好还是坚持使用POSIX

不管怎样,我不能弄清楚的是制作条件语句的标准方法

我想在这篇文章中忽略
test
,而是讨论
[
[[

我发现
[
有点过时,但每个shell都支持它(旧的是
/bin/test/
的别名,新的是shell本身的一部分)。 另一方面,我发现几乎每一个教程都使用
[[
,当被问及原因时,原因是“Bash在大多数Linux发行版中是默认的,所以它就像一个标准”

当然,它们之间有很多不同,我个人觉得
[
更容易使用

所以这里有一个问题:“做条件语句的标准方法是什么?”

如果标准方法没有定义:“什么是最好的方法?”

当你回答时,请记住,我要实现的是可移植性,而不是可读性或易用性

如果可能的话,用事实/文件来支持你的答案,但我也想阅读个人观点。 例如,我想知道您对“bash是一个事实上的标准”的看法,以及将其用作标准而不仅仅是POSIX规则是否真的安全

感谢您抽出时间[:

-具体
[..]]
=
sh
,如
[…]
正如你也征求个人意见,我的看法是:如果没有理由使用特定的方式,请始终尝试遵守标准


两个例子 比较字符串

[[“$a”==“$b”]]
在壳里

[“$a”=“$b”]
在循环条件下

while[[“$i”>0]]
在壳里

while[“$i”-gt 0]

结论 虽然它看起来很难使用,而且有时确实很难使用,但它使您能够将脚本移动到任何shell环境,即可移植性。例如,您可以在Windows上以任何方式运行相同的脚本


我现在意识到,你特别问了
if
条件语句,我所说的也完全适用于这个问题。

我不能使用SH,当我在互联网上找到的文档都是关于Bash的时候,你能告诉我shell script | SH的文档页面是哪个吗