我试图运行一个脚本调用Interface.sh,其中for循环从文件中获取值,并使用here文档通过一系列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
我做错了什么?我可以看到它试图运行它三次(相当于文件中的值的数量)。
答案 0 :(得分:0)
嗯,看起来您的远程计算机上的路径中没有sql
。这可能是 因为rsh
,为了安全起见,将路径限制为:
/usr/bin:/usr/sbin
您可以使用以下命令确认:
rsh otherbox -l username "/usr/bin/echo \$PATH"
最简单的修复可能是为sql
提供完整的文件规范,而不是依赖于在路径中找到它。
或者,您可以使用以下内容:
rsh otherbox -l username ". .profile && sql something or other"
在运行命令之前获取配置文件(并希望设置更完整的路径)。