sql in for循环不起作用

时间:2015-04-27 13:16:48

标签: bash shell loops unix scripting

我试图运行一个脚本调用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

我做错了什么?我可以看到它试图运行它三次(相当于文件中的值的数量)。

1 个答案:

答案 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"

在运行命令之前获取配置文件(并希望设置更完整的路径)。