您好我正在编写一个小的shell脚本,它将从数据库中的.ctl文件加载数据,但不应该在执行脚本后在屏幕上显示输出,因为它很关键,只是想要确认这是否是正确与否:在shell脚本中运行sqlldr
#!/bin/ksh
Y=`sqlldr usr/[email protected] control = /work/ctlm/SCRIPTS/upload.ctl`
echo $Y > sqlldr_1
rm -rf sqlldr_1
您好我正在编写一个小的shell脚本,它将从数据库中的.ctl文件加载数据,但不应该在执行脚本后在屏幕上显示输出,因为它很关键,只是想要确认这是否是正确与否:在shell脚本中运行sqlldr
#!/bin/ksh
Y=`sqlldr usr/[email protected] control = /work/ctlm/SCRIPTS/upload.ctl`
echo $Y > sqlldr_1
rm -rf sqlldr_1
在外壳的空间是用来分隔参数,围绕=
删除它们。 也使用变量$ Y的引号来保存格式(空格,换行符)。
#!/bin/ksh
Y=`sqlldr usr/[email protected] control=/work/ctlm/SCRIPTS/upload.ctl`
echo "$Y" > sqlldr_1
rm -rf sqlldr_1
如果你不希望任何输出到屏幕上,然后使用重定向
例如,删除输出
sqlldr usr/[email protected] control=/work/ctlm/SCRIPTS/upload.ctl >/dev/null 2>&1
要创建2个文件out.log和err.log
sqlldr usr/[email protected] control=/work/ctlm/SCRIPTS/upload.ctl >out.log 2>err.log
fd 1是隐含的,>out.log
与1>out.log
相同可以在>
和文件名 之间添加空格,但文件描述符和>
之间不得有空格
是否有任何理由将输出传递给变量,为什么不直接重定向。为什么要写入一个文件,然后删除它? –
执行脚本后,我不希望sqlldr的输出显示在屏幕上,我该怎么办? – User123
在屏幕上你有2个输出流:标准输出和标准错误,如果你不想输出,使用重定向;我的回答中的例子 –