如何使用unix在数据库中登录和执行命令?

时间:2012-05-30 06:02:11

标签: linux perl unit-testing shell unix

我正在尝试编写一个脚本以在单个脚本中执行下面的步骤。

示例:

bash-3.00$ isql -Ufw -Pframesa -Dcsmain -w2000    
1> select * from UserLogin where UserName ='EPRTUBD'    
2> go    
 UserName             Password                                                                                                                                                                                                                                                        ExpiryDate                 ProfileID   CCRefillSum              LastCCRefillDate           RBRefillSum              LastRBRefillDate           DBRefillSum              LastDBRefillDate           LockStatus FailedLoginCount
 -------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------- ----------- ------------------------ -------------------------- ------------------------ -------------------------- ------------------------ -------------------------- ---------- ----------------
 EPRTUBD              $1$HN1DOjM6$R9.niqQzUQ/2H4663nRoQ/                                                                                                                                                                                                                                     Jun 25 2012  8:04AM         147                     NULL                       NULL                     NULL                       NULL                     NULL                       NULL N                         0

(1 row affected)
1> exit

bash-3.00$

用户名可以是n号。我想提供一个包含所有用户名的输入文件。任何人都可以指导我吗?如何在此命令中分配用户名并在登录数据库后执行。?

1 个答案:

答案 0 :(得分:1)

我没有办法测试这个,但常见的解决方案是使用shell“here-docs”附加std-in来调用isql。如下所示:

#!/bin/bash

isql -Ufw -Pframesa -Dcsmain -w2000 <<-EOS   
    select * from UserLogin where UserName ='EPRTUBD'    
    go
EOS

请注意<<-EOS中的“ - ”。这是一个允许您缩进here-doc的功能,并允许关闭EOS缩进。 EOS 必须缩进标签字符。如果你不能使用tab chars,删除' - '并确保EOS是单独行上的第一个字符(没有尾随空格!; - )

此外,EOS可以是任何文本,我使用EOS作为脚本结束。

我希望这会有所帮助。