arrays - 尝试向数组添加值时出现“+=:找不到命令”-Shell 脚本
问题描述
我正在尝试将文件夹路径添加到数组中。我在互联网上查找并看到了这个解决方案。我试了一下,但收到一条错误消息。
我的代码:
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')
. - 确保为是否要解释变量选择正确的引号:
localsites+=('foo') ; localsites+=("${newSite}")
. - 你几乎从不想要
[*]
。改为使用[@]
,并在其周围加上双引号:echo "${localsites[@]}"
.
推荐阅读
- python - 功能:填充字符串得到长度
- python-3.x - 如何拆分python3列表?
- python - 你能解决问题吗?Python 套接字
- php - 通过带有ajax的jquery发送一个数组以从php启动zip流
- r - R中的IFELSE返回不正确的值
- python - 初学者 PyTorch:RuntimeError:大小不匹配,m1:[16 x 2304000],m2:[600 x 120]
- python - 可变结果即使在更改后也会产生结果
- r - 如何在 r shiny 中编辑表格
- python - Pygame 移动问题
- sql - 如何在 SQL Bigquery 中删除重复的主键行并分组?