Bash数组:意外的语法错误

use*_*576 18 arrays syntax bash shell

我正在编写这个简单的bash脚本,如下所示.

#!/bin/bash

array=( /home/abc/Downloads/something.bat /home/abc/Downloads/smb.conf )
echo ${array[@]}
Run Code Online (Sandbox Code Playgroud)

我希望它能打印出数组中所有文件的名称.但我得到了这个错误:

test.sh: 3: Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)

如果我将数组的声明更改为

array = {/home/abc/Downloads/something.bat /home/abc/Downloads/smb.conf}
Run Code Online (Sandbox Code Playgroud)

这个错误消失但我仍然有新的错误

test.sh: 3: array: not found
test.sh: 4: Bad substitution
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?这是我第一次进行shell编程,所以我自己无法解决问题.

解决:

我正在执行它作为sh test.sh但我忘了我必须执行它作为bash test.sh

Mar*_*c B 5

变量赋值的符号周围不能有空格=

array=( /a/b/  /c/d )
     ^--no spaces 
Run Code Online (Sandbox Code Playgroud)

你确定吗?

marc@panic:~$ array =(a b)      
bash: syntax error near unexpected token `('
marc@panic:~$ array= (a b)  
bash: syntax error near unexpected token `('
marc@panic:~$ array = (a b)
bash: syntax error near unexpected token `('
marc@panic:~$ array=(a b)  
marc@panic:~$ echo ${array[1]}
b
Run Code Online (Sandbox Code Playgroud)