如果thens的Bash语法

时间:2012-08-10 20:52:31

标签: linux bash

无法尝试从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

是代码本身的问题还是试图从shell中使用它 而不是把它放在一个文件和采购文件?

在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准备做更多的工作。

所以,是的,正如Keith指出的那样,我错误地将 ell 误认为是1,并且仍有一些怪癖,但它会执行并发出报告。那是进步。

我在这里与查尔斯史密斯的一些材料一起工作;他在GitHub上分享了一些脚本; github.com/twohlix/HostingScripts/blob/master/listwww。

但是我正在使用NotePad,在编辑了一些东西之后,当我将文本放在剪贴板上并将其卸载到Bash中时,我认为发生的事情是我得到了EOF问题。这个问题给了我一个想法: bash EOF in if statement 我在NotePad2中使用了查看 / 显示行结尾,并复制了我的代码,然后将其粘贴 进入Bash,这很有效。

1 个答案:

答案 0 :(得分: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