bash脚本中应存在fi错误

bash脚本中应存在fi错误,bash,Bash,下面的bash脚本创建一个不存在的目录,并向其中写入一个文件。现在,如果目录存在,它将检索封装在数组中的该目录的文件列表。代码如下: if [ -d $ETC_DIR ]; then echo " * wan27 has been found on your system" echo " * checking for installed versions" versions=( `ls $ETC_DIR` ) # line 27 else echo " * Fir

下面的bash脚本创建一个不存在的目录,并向其中写入一个文件。现在,如果目录存在,它将检索封装在数组中的该目录的文件列表。代码如下:

if [ -d $ETC_DIR ]; then
    echo " * wan27 has been found on your system"
    echo " * checking for installed versions"
    versions=( `ls $ETC_DIR` ) # line 27
else
    echo " * First time installation! Creating etc directory now..."
    mkdir $ETC_DIR
    echo "$VERSION\n$USERi\n`date +%Y%m%d%H%M%S`\n$ROOT_DIR" > $ETC_DIR/install_$VERSION.txt
fi
这就是终端的输出:

27: Syntax error: "(" unexpected (expecting "fi")
所以,第27行实际上是代码的第一个摘录:

versions=( `ls $ETC_DIR` )

我做错了什么?我也尝试过添加分号,但最终得到了相同的结果…

您的脚本依赖于Bash功能(使用带括号的赋值创建数组),但它是由Bourne shell运行的

将脚本的第一行更改为:

#!/bin/bash

您还应该包括第1~23行您应该说
versions=($ETC_DIR/*)
而不是依赖
ls
的输出。是的,这就成功了!我还将第27行替换为versions=$(ls$ETC\u DIR)