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脚本:声明空数组的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

如何在shell脚本中声明和使用布尔变量? POSIX

使其成为 shell 脚本的正确方法

shell脚本编程数组

shell基础

这是检查空数组的正确方法吗?