Bash 脚本:包含空格字符的数组元素

seb*_*seb 0 bash array shell-script whitespace

我正在开始使用 bash 脚本。我正在处理包含空格字符的数组元素。在下面的代码中,第三个数组元素是“Accessory Engine”。我尝试使用\符号设置空格字符,但这无济于事。

在较大的例程中(此处未包含),我使用数组元素通过命令行工具自动执行某些操作。这些命令行工具将接受“附件引擎”作为输入。

#!/bin/bash
components="Persistence Instrument Accessory\Engine"
for i in $components; do
  echo ${i}
done
Run Code Online (Sandbox Code Playgroud)

现在这段代码的输出是:

  Persistence
  Instrument
  Accessory\Engine
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

  Persistence
  Instrument
  Accessory Engine
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Hau*_*ing 5

数组的定义不同:

components=(Persistence Instrument "Accessory Engine")
Run Code Online (Sandbox Code Playgroud)

或者

components=(Persistence Instrument Accessory\ Engine)
Run Code Online (Sandbox Code Playgroud)

并以不同的方式访问:

for i in "${components[@]}"
Run Code Online (Sandbox Code Playgroud)

  • @lomppi:引号用于防止不必要的分词。见 http://mywiki.wooledge.org/BashGuide/Practices#Quoting (2认同)
  • @lomppi 这与这个问题无关(但如果有两个或更多连续的空格)但通常你应该习惯使用引号:`echo "${i}"` (2认同)