使用ssh获取数据的Linux变量给出了警告:here-document在第95行由文件结尾分隔(想要`SSHSQLTEXT')

时间:2013-07-05 12:47:41

标签: linux bash variables eof

我需要从Vertica DB获取值并将其分配给shell中的变量以供进一步使用。 Vertica DB驻留在单独的Linux服务器中。我正在使用下面的脚本来获取数据。它的工作原理也为linux变量赋值。但我正在收到警告。从'SSHSQLTEXT'中删除单引号会使代码块无法正常工作。

代码:

execute_command="SELECT SCHEMA_ID FROM V_CATALOG.SCHEMATA WHERE SCHEMA_NAME = '$v_schema_name'; "

retVal=$(ssh $o_pem_key_string $v_server_user@$v_server_name ssh_v_db_name=$v_db_name ssh_v_schema_name=$v_schema_name ssh_v_schema_pwd=$v_schema_pwd ssh_execute_command=\""$execute_command"\" \'bash -s\' <<'SSHSQLTEXT'
/opt/vertica/bin/vsql -d $ssh_v_db_name -U $ssh_v_schema_name -w $ssh_v_schema_pwd -c "$ssh_execute_command"
SSHSQLTEXT)
has_log_table_val=($retVal)
export v_schema_id=${has_log_table_val[2]}
echo $v_schema_id

警告讯息:

./testsample.sh: line 97: warning: here-document at line 95 delimited by end-of-file (wanted `SSHSQLTEXT')

1 个答案:

答案 0 :(得分:1)

SSHSQLTEXT)需要替换为两行,例如:

SSHSQLTEXT
)

heredoc名称需要在最后匹配整行。