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