shell脚本sqlplus中意外标记'fi'附近的语法错误

时间:2016-08-15 20:03:42

标签: bash shell while-loop

在执行他的bash脚本时,我遇到了一个问题。目前,在意外令牌'fi'附近收到错误说法语错误。 '连接'。

 USER_TYPE=$1 #IDENTIFY USER TYPE TYPE1,TYPE2,TYPE3,TYPE4,TYPE5
 USER_NAME=$2
 TARGET_SCHEMA=$3
 TARGET_TABLE=$4
PERMISSION_TYPE=$5
if $USER_TYPE == 'TYPE1';
    then
sqlplus /  <<  E00
CREATE USER ${USER_NAME}
IDENTIFIED BY "default"
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
ALTER USER ${USER_NAME} DEFAULT ROLE ALL;
GRANT CREATE SESSION TO ${USER_NAME};
GRANT CONNECT TO ${USER_NAME};
exit
E00
cat perm.txt |while read PERMISSION OWNER TABLE USER 
do
sqlplus / as sysdba > /home/o/direct/Passa/output/output.log << E01
GRANT $PERMISSION ON $OWNER.$TABLE TO $USER; 
E01
fi

1 个答案:

答案 0 :(得分:2)

您错过了done循环的while关键字。

cat perm.txt |while read PERMISSION OWNER TABLE USER 
do
sqlplus / as sysdba > /home/o/direct/Passa/output/output.log << E01
GRANT $PERMISSION ON $OWNER.$TABLE TO $USER; 
E01
done
fi

顺便说一句,这是一个UUOC。您可以使用输入重定向

while read PERMISSION OWNER TABLE USER 
do
sqlplus / as sysdba > /home/o/direct/Passa/output/output.log << E01
GRANT $PERMISSION ON $OWNER.$TABLE TO $USER; 
E01
done < perm.txt