我试图在Shell脚本中声明一个空数组,但我遇到了错误。
#!/bin/bash
list=$@
newlist=()
for l in $list; do
newlist+=($l)
done
echo "new"
echo $newlist
当我执行它时,我得到test.sh: 5: test.sh: Syntax error: "(" unexpected
答案 0 :(得分:10)
用bash运行它:
bash test.sh
看到错误,似乎你实际上是用破折号运行它:
> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected
只有这次你可能使用了它的链接(/ bin / sh - > / bin / dash)。
答案 1 :(得分:7)
答案 2 :(得分:1)
试试看你是否面向破折号或猛击
ls -al /bin/sh
如果显示/bin/sh -> /bin/dash
,请输入以下内容:
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
然后再次输入:
ls -al /bin/sh*
然后必须说出这样的话:
/bin/sh -> /bin/bash
这意味着现在sh
已正确定向到Bash,您的数组将正常工作。
答案 3 :(得分:0)
在BASH 4+中,您可以使用以下命令声明一个空数组:
declare -a ARRAY_NAME=()
然后您可以通过以下方式添加新项目:
ARRAY_NAME+=NEW_ITEM
答案 4 :(得分:-2)
如果数组为空,请执行以下操作:
NEWLIST=
您可以查看:
if [ $NEWLIST ] ; then
# do something
fi
非空数组声明如下所示:
NEWLIST=('1' '2' '3')
在处理过程中填充数组:
ARRAY=("$(find . -name '*.mp3')")
希望这有帮助