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
变量赋值的符号周围不能有空格=:
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)