0

尝试从 bash 运行它时遇到问题:

[root@bryanserver ~]# $SPACER="#-------#" APACHE_ENABLED=`ls -1 "$HTTPD_HOSTS-EN" | grep ".conf" | sed s/.conf//` APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -1` if [ -n "$APACHE_ENABLED" ]; then echo $SPACER echo "Apache enabled Sites: $APACHE_COUNT" echo "$APACHE_ENABLED" else echo $SPACER echo "There are no detectable nor delectable WebSites In Sight Blackbeard" fi
bash: syntax error near unexpected token `then

是代码本身的问题还是试图从外壳中使用它而不是将它放在文件中并获取文件?

在 Bash 的命令行中输入:

APACHE_ENABLED=`"$HTTPD_HOSTS_EN" | grep ".conf" | sed s/.conf//`
APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -l`
if [ -n "$APACHE_ENABLED" ]; then
 echo $SPACER
 echo "Apache Enabled Sites: $APACHE_COUNT"
 echo "$APACHE_ENABLED" 
else
 echo $SPACER
 echo "There are no detected Apache Enabled Sites"
fi

produces this output:
APACHE_ENABLED=`"$HTTPD_HOSTS_EN" | grep ".conf" | sed s/.conf//`
APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -l`
-bash: : command not found
[root@bryanserver ~]# APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -l`
[root@bryanserver ~]# if [ -n "$APACHE_ENABLED" ]; then
>  echo $SPACER
>  echo "Apache Enabled Sites: $APACHE_COUNT"
>  echo "$APACHE_ENABLED"
> else
>  echo $SPACER
>  echo "There are no detected Apache Enabled Sites"
> fi  #

然后点击进入,瞧!结果如下:没有检测到启用 Apache 的站点 [root@bryanserver ~]# 并且 Bash 已准备好进行更多工作。

所以,是的,正如基思指出的那样,我把ell误认为1,还有一些怪癖,但它执行并发出报告。这就是进步。

我在这里使用 Charles Smith 的一些材料;他在 GitHub 上分享了一些脚本;github.com/twohlix/HostingScripts/blob/master/listwww。

但是我使用的是记事本,在编辑了一些东西之后,当我将文本放在剪贴板上并在 Bash 中卸载它时,我相信发生的事情是我遇到了 EOF 问题。这个 SO question 给了我一个想法: bash EOF in if statement 我在 NotePad2 中使用了View / Show Line Endings,并复制了我的代码,然后将其粘贴到 Bash 中,这很有效。

4

1 回答 1

2

我看到的东西:

  • 声明不$SPACER应该有美元符号
  • ;在声明性语句之间添加分号

我认为这就是您在多行语句中的意思:

SPACER="#-------#"
APACHE_ENABLED=`ls -1 "$HTTPD_HOSTS-EN" | grep ".conf" | sed s/.conf//`
APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -1`
if [ -n "$APACHE_ENABLED" ]; then 
    echo $SPACER;
    echo "Apache enabled Sites: $APACHE_COUNT";
    echo "$APACHE_ENABLED";
else 
    echo $SPACER;
    echo "There are no detectable nor delectable WebSites In Sight Blackbeard";
fi

然后,在一行中,记住在&&分隔语句中添加分号或双 & 号:

SPACER="#-------#"; APACHE_ENABLED=`ls -1 "$HTTPD_HOSTS-EN" | grep ".conf" | sed s/.conf//`; APACHE_COUNT=`echo -e "$APACHE_ENABLED" | wc -1`; if [ -n "$APACHE_ENABLED" ]; then echo $SPACER; echo "Apache enabled Sites: $APACHE_COUNT"; echo "$APACHE_ENABLED"; else echo $SPACER; echo "There are no detectable nor delectable WebSites In Sight Blackbeard"; fi
于 2012-08-10T20:59:54.260 回答