gpt4 book ai didi

linux - bash/sh if 语句语法

转载 作者:IT王子 更新时间:2023-10-29 00:26:00 27 4
gpt4 key购买 nike

在各种指南和脚本中,我发现人们倾向于使用不同的 if 语句语法。有什么区别,最佳做法是什么?我相信以下所有语句以及更多变体都将返回 true:

bar="foo"
if [ "foo" = "foo" ]
if [[ "foo" == $bar ]]
if [ "foo" = "$bar" ]
if [[ "foo" = "$bar" ]]
if [[ "foo" -eq $bar ]]

最佳答案

据我了解

= 需要字符串

-eq 需要整数

“$bar”用于字面匹配,即 z* 可以扩展,但“z*”将字面匹配通配符字符。

[]和[[]]的区别在于后者没有分词和路径扩展,而前者有。

Plus [[]] 允许额外的运算符:

&&(与),|| (或者),>(String1 在词法上大于 String2),<(String1 在词法上小于 String2)

== 比较运算符在双括号测试中的行为与在单括号测试中的行为不同。

[[ $a == z* ]] # 如果 $a 以“z”开头(模式匹配)则为真。

[[ $a == "z*"]] # 如果 $a 等于 z*(文字匹配)则为真。

[ $a == z* ] # 发生文件通配和分词。

[ "$a"== "z*"] # 如果 $a 等于 z*(文字匹配)则为真。

查看 http://tldp.org/LDP/abs/html/comparison-ops.html了解更多信息

关于linux - bash/sh if 语句语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430529/

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