gpt4 book ai didi

string - 带引号和不带引号的 bash 字符串有什么区别

转载 作者:行者123 更新时间:2023-12-04 01:51:17 33 4
gpt4 key购买 nike

在 Bash 脚本中用引号将字符串内容括起来是否重要?
考虑以下两个变量:

str1=hei
str2="Hi"

在 bash 中,以上哪种定义字符串文字的方法是首选,为什么?

最佳答案

这根本没有关系。纯粹出于文体原因,很多人会说使用引号是首选。 bash 中引号的唯一目的是控制分词和变量插值。 (和特殊字符......它可能是一个相当长的列表)。由于等式的右侧没有变量也没有特殊字符,因此不需要引号。

考虑以下:

sp='this is a string with spaces'   #1
sp=this' is a st'rin"g wit"h\ spaces #2 same as #1
v=$sp #3
v="$sp" #4 equivalent to #3
v='$sp' #5 assign literal string $sp

2 和 3 在风格上很糟糕,但完全有效。由于在变量赋值中不会发生分词,因此 #3 和 #4 是等效的。在带有空格的字符串中使用双引号的目的是防止分词(也可以使用反斜杠来实现)。即, sp=this is a string将解析为尝试调用命令 is带参数 astring和环境变量 sp设置为 this 的值,但使用引号可以防止这种情况。使用双引号而不是单引号的原因是允许变量插值。当字符串既没有变量也没有空格时,根本没有理由(除了样式)使用任何引号。

就个人而言,我觉得过度引用的风格有点过分。除非一个人在交互式提示上使用引号使用类似 ls "/p/a/t/h" 的命令,我认为没有必要在不需要时使用引号。为了保持一致性,那些提倡使用引号的人应该总是输入 "ls" "/p/a/t/h" ,而且我从来不知道有人会引用这样的命令。 OTOH,shell 引用规则可能有点神秘(请参阅上面的 #2!),如果有任何疑问,请使用引号。

关于string - 带引号和不带引号的 bash 字符串有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52938260/

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