我已经从SuSE更改为RHEL,并尝试使用相同的代码,我相信我在标识方面遇到了一些错误。 SuSE使用bash3,RHEL使用bash4。
错误消息:
-bash: test.sh: line 9: unexpected EOF while looking for matching `)'
-bash: test.sh: line 21: syntax error: unexpected end of file
当我改变时:
EOF)
为此(删除标签):
EOF)
工作正常。我知道这个问题,但我想了解为什么它与SuSE和RHEL可以正常工作,但事实并非如此。关键是要更改代码中的代码将花费大量时间和精力,因此,有什么办法可以解决unix会话或某些配置问题?
#!/bin/bash
result=$(sqlplus -S /nolog << EOF
WHENEVER SQLERROR EXIT SQL.SQLCODE;
Connect $ORACLE_USER/$(sh /bin/encrypt.sh -d "$ORACLE_PASS")@${HOST}:${PORT}/${HOST}
set heading off
set line 1000
$QUERY;
EXIT;
EOF)
result=$(echo $result | tail --lines=1)
echo $result
return $result
}
答案 0 :(得分:3)
如果要缩进此处文档分隔符,则应将<<
更改为<<-
。您必须使用制表符来缩进代码,空格不起作用。请注意,)
不遵循EOF
;那是因为bash无法关闭$()
。
VAL=$(cat <<-EOF
derp
EOF
)
echo "$VAL"
exit 0