下面的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

关于bash - bash脚本中预期的fi错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4563690/

10-11 23:27
查看更多