bash中变量中字符串和字符串之间的区别

沃德瓦

我发现bash有点奇怪,我无法解释。当我使用带引号的字符串(单引号和双引号)的方括号表示法初始化数组时,该字符串将作为数组的第一个元素放置。当我将字符串放入变量中并且对该变量执行相同操作时,该字符串会被IFS正确分隔。

#/bin/bash
test1="hello my name is mr nobody"
array1=($test1)
test2='hello my name is mr nobody'
array2=($test2)
array3=("Hello my name is mr nobody")
array4=('Hello my name is mr nobody')
declare -p array1
declare -p array2
declare -p array3
declare -p array4

输出:

declare -a array1='([0]="hello" [1]="my" [2]="name" [3]="is" [4]="mr" [5]="nobody")'
declare -a array2='([0]="hello" [1]="my" [2]="name" [3]="is" [4]="mr" [5]="nobody")'
declare -a array3='([0]="Hello my name is mr nobody")'
declare -a array4='([0]="Hello my name is mr nobody")'

究竟发生了什么,两种方法之间有什么不同?

字符串和变量中的字符串之间没有区别。因此,以下两个相同:

> test1="hello my name is mr nobody"
> array1=($test1)

> array2=(hello my name is mr nobody)

以下两个也是:

> test2="hello my name is mr nobody"
> array3=("$test2")

> array4=("hello my name is mr nobody")

该字符串不能“记住”其某些或所有字符都被引用了。引号完全是句法的,并且由bash解释器解释(一次)。

这与其他语言没有明显的不同:在C或Python中,字符串"abc"包含三个字符,而不是五个字符。引号仅用于指示文字是字符串。但是,在bash中,有可能(有时)编写不带引号的字符串,这是许多其他语言所不允许的。

单词拆分是在未加引号的字符串上执行的,因此它是在$test1上执行的a string,而不是在加引号的版本"$test1"上执行的"a string"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

原始字符串和变量中的字符串之间的bash差异

来自分类Dev

Ruby中+ =和<<之间的区别以连接字符串

来自分类常见问题

Java 9中压缩字符串和压缩字符串之间的区别

来自分类Dev

Golang中*字符串和字符串之间有什么区别?

来自分类Dev

Bash的字符串变量中带有〜和不带有〜的区别是什么?

来自分类Dev

字符串和字符串^之间的区别?

来自分类Dev

字符串和字符串[]之间的区别

来自分类Dev

整个字符串命令和popen中的字符串列表之间的区别

来自分类Dev

字符串中的变量

来自分类Dev

字符串[80]与Delphi 7和Delphi XE4中的字符串之间的区别

来自分类Dev

变量和字符串之间的串联

来自分类Dev

变量和字符串之间的串联

来自分类Dev

如何捕获多行字符串中某些字符和字符串之间的字符串?Python

来自分类Dev

Bash变量替换和字符串

来自分类Dev

Python中的字符串+变量+字符串格式

来自分类Dev

字符串和字符数组之间的区别

来自分类Dev

全球外部。字符串和字符之间的区别*

来自分类Dev

EF Core中的字符串连接和字符串插值之间有什么区别吗?

来自分类Dev

将引号插入bash中的字符串变量中

来自分类Dev

在bash中的变量中查找字符串

来自分类Dev

从 Bash 中的变量列表中获取字符串

来自分类Dev

使用bash在字符串之间查找文本并替换找到的字符串中的文本

来自分类Dev

Bash - 在字符串中查找子字符串

来自分类Dev

注册表中字符串值和二进制值之间的区别

来自分类Dev

SQLite中的字符串文字和标识符之间的区别

来自分类Dev

URL查询字符串中的“ key”和“ key =“之间有区别吗?

来自分类Dev

C字符串中'0'、0和'\0'之间的区别

来自分类Dev

c ++中字符串s = s +“0”和s + =“0”的连接之间的区别

来自分类Dev

在C中声明字符串的区别

Related 相关文章

  1. 1

    原始字符串和变量中的字符串之间的bash差异

  2. 2

    Ruby中+ =和<<之间的区别以连接字符串

  3. 3

    Java 9中压缩字符串和压缩字符串之间的区别

  4. 4

    Golang中*字符串和字符串之间有什么区别?

  5. 5

    Bash的字符串变量中带有〜和不带有〜的区别是什么?

  6. 6

    字符串和字符串^之间的区别?

  7. 7

    字符串和字符串[]之间的区别

  8. 8

    整个字符串命令和popen中的字符串列表之间的区别

  9. 9

    字符串中的变量

  10. 10

    字符串[80]与Delphi 7和Delphi XE4中的字符串之间的区别

  11. 11

    变量和字符串之间的串联

  12. 12

    变量和字符串之间的串联

  13. 13

    如何捕获多行字符串中某些字符和字符串之间的字符串?Python

  14. 14

    Bash变量替换和字符串

  15. 15

    Python中的字符串+变量+字符串格式

  16. 16

    字符串和字符数组之间的区别

  17. 17

    全球外部。字符串和字符之间的区别*

  18. 18

    EF Core中的字符串连接和字符串插值之间有什么区别吗?

  19. 19

    将引号插入bash中的字符串变量中

  20. 20

    在bash中的变量中查找字符串

  21. 21

    从 Bash 中的变量列表中获取字符串

  22. 22

    使用bash在字符串之间查找文本并替换找到的字符串中的文本

  23. 23

    Bash - 在字符串中查找子字符串

  24. 24

    注册表中字符串值和二进制值之间的区别

  25. 25

    SQLite中的字符串文字和标识符之间的区别

  26. 26

    URL查询字符串中的“ key”和“ key =“之间有区别吗?

  27. 27

    C字符串中'0'、0和'\0'之间的区别

  28. 28

    c ++中字符串s = s +“0”和s + =“0”的连接之间的区别

  29. 29

    在C中声明字符串的区别

热门标签

归档