'+=: Command not found' 尝试将值添加到数组时 - Shell 脚本
'+=: Command not found' when trying to add a value to an array - Shell Script
我正在尝试将文件夹路径添加到数组。我在互联网上查找并看到 this 解决方案。我尝试了一下,但收到一条错误消息。
我的代码:
LOCALSITES=()
for d in "$DIRLOC"/*; do
${LOCALSITES}+='foo' #doesnt work
done
echo "${LOCALSITES[*]}"
错误信息:
showSites.sh: line 35: +=: command not found
${LOCALSITES}+='foo'
将解释该变量的当前值,给你一个空字符串,因此使命令读作:
+='foo'
如果你事先set -x
你可以看到这个:
pax:~$ set -x ; ${xx}+='foo' ; set +x
+ set -x
+ +=foo
+ '[' -x /usr/lib/command-not-found ']'
+ /usr/lib/command-not-found -- +=foo
+=foo: command not found
+ return 127
+ set +x
与以下内容没有什么不同:
pax:~$ xx=1
pax:~$ ${xx}=2 # should be xx=2
1=2: command not found
要正确附加到数组,您需要做:
LOCALSITES+=('foo')
您可能想考虑的其他事情,由 Gordon Davisson 在评论中提供:
- 可能最好使用小写或混合大小写的变量名,以避免与许多具有特殊功能的全大写变量发生冲突:
localsites+=('foo')
.
- 确保 select 正确引用是否要解释变量:
localsites+=('foo') ; localsites+=("${newSite}")
.
- 你几乎从不想要
[*]
。请改用 [@]
,并在其两边加上双引号:echo "${localsites[@]}"
.
我正在尝试将文件夹路径添加到数组。我在互联网上查找并看到 this 解决方案。我尝试了一下,但收到一条错误消息。
我的代码:
LOCALSITES=()
for d in "$DIRLOC"/*; do
${LOCALSITES}+='foo' #doesnt work
done
echo "${LOCALSITES[*]}"
错误信息:
showSites.sh: line 35: +=: command not found
${LOCALSITES}+='foo'
将解释该变量的当前值,给你一个空字符串,因此使命令读作:
+='foo'
如果你事先set -x
你可以看到这个:
pax:~$ set -x ; ${xx}+='foo' ; set +x
+ set -x
+ +=foo
+ '[' -x /usr/lib/command-not-found ']'
+ /usr/lib/command-not-found -- +=foo
+=foo: command not found
+ return 127
+ set +x
与以下内容没有什么不同:
pax:~$ xx=1
pax:~$ ${xx}=2 # should be xx=2
1=2: command not found
要正确附加到数组,您需要做:
LOCALSITES+=('foo')
您可能想考虑的其他事情,由 Gordon Davisson 在评论中提供:
- 可能最好使用小写或混合大小写的变量名,以避免与许多具有特殊功能的全大写变量发生冲突:
localsites+=('foo')
. - 确保 select 正确引用是否要解释变量:
localsites+=('foo') ; localsites+=("${newSite}")
. - 你几乎从不想要
[*]
。请改用[@]
,并在其两边加上双引号:echo "${localsites[@]}"
.