arrays - 最佳实践 : Print an array in a bash script

标签 arrays bash unix scripting

我跑了shellcheck在我的脚本上并在一个非常简单的方面遇到了错误 -

echo "List of fields deleted: ${deleted[@]}"
^-----------^ SC2145: Argument mixes string and array. Use * or separate argument.



我正在尝试做如下类似的行为-
declare -a  deleted
deleted = ("some.id.1" "some.id.22" "some.id.333")
echo "List of fields deleted: ${deleted[@]}"

打印数组中的元素哪个更好?
echo "List of fields deleted: ${deleted[@]}"

或者
echo "List of fields deleted: "
 for deletedField in "${deleted[@]}"; do echo "${deletedField}"; done

最佳答案

包括一个@较长字符串中的 -indexed 数组可能会产生一些奇怪的结果:

$ arr=(a b c)
$ printf '%s\n' "Hi there ${arr[@]}"
Hi there a
b
c

发生这种情况是因为 ${arr[@]} 的引用扩展是一系列独立的词,其中printf将一次使用一个。第一个字aHi there 结束前置(就像数组后面的任何内容都将附加到 c )。

当数组扩展是较大字符串的一部分时,您几乎肯定希望扩展是单个单词。
$ printf '%s\n' "Hi there ${arr[*]}"
Hi there a b c

echo ,这几乎无关紧要,因为您可能不在乎 echo正在接收一个或多个参数。

关于arrays - 最佳实践 : Print an array in a bash script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149641/

相关文章:

linux - 使用 bash '&' 命令并行处理

c - fork tree C,子进程PID

linux - 什么样的命令是 "sudo", "su", or "torify"

Java:数组列表的二维数组?

android - 如何比较字符串数组

python - 从三个一维数组创建热图

javascript - 动态地从对象数组中提取 key 并转换为对象数组

linux - shell脚本linux,bash : moving files according to name field-1 to the specific path in field-2 using `cut`

linux - 猫有什么用,它在这里做什么?

linux - 接受用户名作为命令行参数并仅显示该用户帐户信息的脚本是什么?