bash脚本中的预期fi bug

时间:2010-12-30 15:08:37

标签: 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 " * 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` )

我做错了什么?我也试过添加了冒号,但结果却相同......

1 个答案:

答案 0 :(得分:6)

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

将脚本的第一行更改为:

#!/bin/bash