我试图找出这个脚本有什么问题:
1 #! /bin/sh
2
3 METH1=$(ip=$(ifconfig eth0 | awk '$1 == "inet" {print $2}'):7001; echo $ip)
4 METH2=$(echo $(find /u01/ -name config.xml |grep -v bak| xargs grep -A4 AdminServer | grep listen-address | cut -d'>' -f 2 | cut -d'<' -f 1))
5
6 PATH=$(find /u01/oracle/config/ -wholename */AdminServer)
7
8 if [ "$PATH" ] = 0; then
9 if [ "$METH1" ] = 0; then
10 echo $METH1
11 elif [ "$METH2" ] = 0
12 echo $METH2
13 else
14 exit()
15 else
16 if [ "$METH2" ] = 0; then
17 echo $METH2
18 else
19 exit()
20 fi
这将生成此错误:
./adminurl.sh: line 13: syntax error near unexpected token `else'
./adminurl.sh: line 13: ` else'
任何帮助都值得赞赏。
在"elif"语句之后,你需要另一个"then"关键字
第 11 行 :
elif [ "$METH2" ] = 0
then
echo $METH2
你在if-elif-else
语句中遗漏了一些东西。首先要注意的是,每次elif
后,您都需要一个then
。之后,您的内部 if-else 语句需要用自己的fi
关闭。最后,从退出调用中删除括号,它们不是必需的。
您的代码如下所示:
#!/bin/sh
METH1=$(ip=$(ifconfig eth0 | awk '$1 == "inet" {print $2}'):7001; echo $ip)
METH2=$(echo $(find /u01/ -name config.xml |grep -v bak| xargs grep -A4 AdminServer | grep listen-address | cut -d'>' -f 2 | cut -d'<' -f 1))
PATH=$(find /u01/oracle/config/ -wholename */AdminServer)
if [ "$PATH" ] = 0; then
if [ "$METH1" ] = 0; then
echo $METH1
elif [ "$METH2" ] = 0; then
echo $METH2
else
exit
fi
else
if [ "$METH2" ] = 0; then
echo $METH2
else
exit
fi
fi
注意:您也使用 sh 而不是 bash。如果您确实要使用 bash,请考虑将 hashbang 行从#!/bin/sh
更改为#!/bin/bash
。