击阵列:意外的语法错误[关闭](Bash array: Unexpected Syntax erro

2019-06-25 12:06发布

我如下写这个简单的bash脚本。

#!/bin/bash

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

我希望它打印在阵列中的所有文件名称。 但是我得到这个错误,而不是:

test.sh: 3: Syntax error: "(" unexpected

如果我改变数组的声明

array = {/home/abc/Downloads/something.bat /home/abc/Downloads/smb.conf}

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

test.sh: 3: array: not found
test.sh: 4: Bad substitution

我怎样才能解决这个问题? 这是我在shell编程第一次,所以我无法修复的问题我自己。

解决:

我正在执行它的sh test.sh但我忘了,我不得不执行它的bash test.sh

Answer 1:

变量赋值不能有周围的空间=标志:

array=( /a/b/  /c/d )
     ^--no spaces 

你确定吗?

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


Answer 2:

指针:空格是在BASH变量赋值重要。 或等号不要使用它们。



Answer 3:

您使用的是DOS编辑器创建自己的脚本?

击等贝壳,不喜欢CRLF对,只是LF(或\r\n个字符VS只是普通的\n字符)。

把你的脚本,通过这个测试

cat -vet myScript.sh

你看到“^ M”字符的行结束了吗? 如果是的话那是一个dos文件。

看看你的系统已经DOS2UNIX的,然后使用它像

dos2unix myScript.sh

此外,由于几个人都发表了评论,请编辑您原来的问题,以消除在你的空间=在分配到标志array

我希望这有帮助。



文章来源: Bash array: Unexpected Syntax error [closed]