gpt4 book ai didi

if-statement - Posix 标准中的条件

转载 作者:行者123 更新时间:2023-12-03 23:54:56 25 4
gpt4 key购买 nike

在这些日子里,我花了很多时间阅读有关脚本编写的各种文章和指南(主要是 bash)。

首先出现的一件事是,为了可移植性,最好的做法是坚持使用 POSIX。

无论如何,我无法直截了当的是做出条件语句的标准方法......

我想忽略 test在此帖中讨论 [[[反而。

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

当然,我发现他们和我个人之间有很多差异[[更容易使用。

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

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

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

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

谢谢你的时间 [:

最佳答案

Bash -具体的

[[ .. ]]

POSIX = sh , 喜欢 dash

[ .. ]

正如您还征求个人意见,我的意见是:如果没有理由使用 Bash -具体方式,始终尽量坚持 POSIX标准。

两个例子

比较字符串

Bash

[[ "$a" == "$b" ]]

POSIX shell

[ "$a" = "$b" ]

While 循环条件

Bash

while [[ "$i" > 0 ]]

POSIX shell

while [ "$i" -gt 0 ]

结论

虽然它可能看起来 POSIX使用起来相当困难,而且有时肯定是这样,它使您能够将脚本移动到任何 shell 环境,即可移植性。例如,您可以在 Cygwin 中在 Windows 上运行相同的脚本。并在任何 Linux shell .

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

关于if-statement - Posix 标准中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49978928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com