欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 Bash 中,采用 "${whitelist[@]}"
和 "${whitelist[*]}"
都表示引用数组 whitelist
中的元素,但它们之间存在一个重要的区别,主要体现在空格分隔和整体引用的处理上。
"${whitelist[@]}"
使用 @
符号时,每个数组元素会作为单独的参数处理。
如果一个元素包含空格,它将作为一个整体传递,而不会被拆分。
例如,如果你有一个数组元素 ("element 1" "element 2" "element with spaces")
,当你使用 "${whitelist[@]}"
时,它们将被传递为:
"element 1"
"element 2"
"element with spaces"
"${whitelist[*]}"
使用 *
符号时,将所有数组元素视为单一的字符串传递。
这意味着所有元素会被合并为一个字符串,元素之间用空格分隔(默认)。
如果数组中有多个元素,它们会被连接在一起,例如:
"element 1 element 2 element with spaces"
让我们看看一个具体的例子:
#!/bin/bash
# 定义数组
whitelist=("aaaa" "bbbb" "cccc" "Some Other Element")
# 打印数组内容
echo "Using the @ syntax: "
for item in "${whitelist[@]}"; do
echo "$item"
done
echo ""
echo "Using the * syntax: "
echo "${whitelist[*]}"
使用 "${whitelist[@]}"
:
Using the @ syntax:
Luxshare-Office
Luxshare-NST
Luxshare-MST
Luxshare-NYB
Luxshare-MYB
Some Other Element
使用 "${whitelist[*]}"
:
Using the * syntax:
aaaa bbbb cccc Some Other Element
如果你希望将数组的每个元素分别处理,比如在循环中进行操作或在命令中逐个传递,使用 "${whitelist[@]}"
。
如果你想将整个数组的元素作为一个整体字符串传递,使用 "${whitelist[*]}"
。
"${whitelist[@]}"
: 每个元素作为单独的参数处理。
"${whitelist[*]}"
: 所有元素作为一个单一的字符串处理。