Shell脚本:声明空数组的正确方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本:声明空数组的正确方法相关的知识,希望对你有一定的参考价值。
我试图在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
答案
用bash运行它:
bash test.sh
看到错误,似乎你真的用破折号运行它:
> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected
只有这次你可能使用了它的链接(/ bin / sh - > / bin / dash)。
另一答案
我发现以下语法更具可读性。
declare -a <name of array>
有关更多详细信息,请参阅Bash Guide for Beginners: 10.2. Array variables。
另一答案
试试看你是否面向短划线或猛击
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,你的阵列将起作用。
另一答案
在BASH 4+中,您可以使用以下命令声明一个空数组:
declare -a ARRAY_NAME=()
然后,您可以通过以下方式追加新项目:
ARRAY_NAME+=NEW_ITEM
另一答案
如果数组为空,只需执行以下操作:
NEWLIST=
您可以查看:
if [ $NEWLIST ] ; then
# do something
fi
非空数组声明如下所示:
NEWLIST=('1' '2' '3')
在处理过程中填充数组:
ARRAY=("$(find . -name '*.mp3')")
希望这可以帮助
以上是关于Shell脚本:声明空数组的正确方法的主要内容,如果未能解决你的问题,请参考以下文章