Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 最佳实践:在bash脚本中打印数组_Arrays_Bash_Unix_Scripting - Fatal编程技术网

Arrays 最佳实践:在bash脚本中打印数组

Arrays 最佳实践:在bash脚本中打印数组,arrays,bash,unix,scripting,Arrays,Bash,Unix,Scripting,我在脚本上运行了shellcheck,在一个非常简单的方面遇到了错误- echo“已删除字段列表:${deleted[@]}” ^-----------^SC2145:参数混合了字符串和数组。使用*或单独的参数 我正在尝试做如下类似的行为- declare -a deleted deleted = ("some.id.1" "some.id.22" "some.id.333") echo "List of fields deleted: ${deleted[@]}" 打印数组中的元素哪种做法

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

echo“已删除字段列表:${deleted[@]}”
^-----------^SC2145:参数混合了字符串和数组。使用*或单独的参数

我正在尝试做如下类似的行为-

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[@]}"


在较长的字符串中包含一个
@
-索引数组可能会导致一些奇怪的结果:

$ arr=(a b c)
$ printf '%s\n' "Hi there ${arr[@]}"
Hi there a
b
c
这是因为
${arr[@]}
的引号扩展是一系列单独的单词,而
printf
将一次使用一个单词。第一个单词
a
在前面加上
Hi
(就像数组后面的任何内容都会附加到
c

当数组扩展是较大字符串的一部分时,您几乎肯定希望扩展为单个单词

$ printf '%s\n' "Hi there ${arr[*]}"
Hi there a b c

对于
echo
,这无关紧要,因为您可能不在乎
echo
是否接收到一个或多个参数。

谢谢!这澄清了我的疑问。
$ printf '%s\n' "Hi there ${arr[*]}"
Hi there a b c