无法尝试从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,这很有效。
答案 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