【发布时间】:2015-07-05 23:25:41
【问题描述】:
我正在尝试运行脚本调用 Interface.sh,其中 for 循环从文件中获取值并使用此处文档通过一系列 sql 命令运行它。
该文件(称为 InterfaceSymbols.ASIA)包含 3 行文本。
以下是我目前所拥有的。
rsh $MACHINE
cd /srg/data/Interface
for line in `cat /srg/data/Interface/InterfaceSymbols.ASIA`
do
sql <<EOF
select s.symbol, i.inventory
from
symbol s,
inventory i,
portfolio_inventory pi
WHERE
s.portfolio = pi.portfolio AND
pi.inventory = i.inventory
and s.symbol = "$line";
exit
EOF
done
当我运行 shell 脚本时,它并没有按我的预期工作。
然后 rsh 转到 $MACHINE,然后从那里什么也不做。当我退出机器时它返回:
Inter.sh: line 16: sql: command not found
Inter.sh: line 16: sql: command not found
Inter.sh: line 16: sql: command not found
我做错了什么??我可以看到它尝试运行它 3 次(相当于文件中的值的数量)。
【问题讨论】:
-
它无法识别sql命令,尝试给它完整路径
-
好的,但现在我得到了:
Enter user-name: SP2-0306: Invalid option.Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]where <logon> ::= <username>[/<password>][@<connect_identifier>] <proxy> ::= <proxyuser>[<username>][/<password>] [@<connect_identifier>]Enter user-name: Enter password:ERROR:ORA-12545: Connect failed because target host or object does not exist我如何传递 sql 登录名和密码? -
现在它知道什么是 sql,您需要告诉它它正在连接到哪个数据库,并为它提供用户 ID 和密码。换句话说,您需要检查调用 sql 的语法。
-
类似 sql user_id/password@yourdb
-
这很好,谢谢,还有一个问题 - 如何将循环的此处文档的输出保存到单独的文件中?似乎无法解决!
标签: bash shell loops unix scripting