重写你的脚本。
#!/bin/bash
# @echo;
# set nls_lang=russian_cis.ru8pc866
export NLS_LANG=russian_cis.ru8pc866
# not needed @echo off
# SET NLS_NUMERIC_CHARACTERS=. '
export NLS_NUMERIC_CHARACTERS='.'
PATH="/path/to/sqlDir/install:${PATH}"
# sqlldr.exe userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100
sqlldr userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100
# ? cmd
我已将您的代码留在其中,但已注释掉(使用 shell 注释字符“#”)。未注释的行是将 .bat 语法“翻译”成 Linux/Unix bash/shell 语法。
上面有一些你可能需要解决的问题:
您必须在 PATH 的重置中包含正确的值,请注意该值严格用于说明问题。
export
用于使当前 shell(shell 脚本)中设置的变量对从 shell 脚本运行的子进程可见,在这种情况下,重要的是sqlldr
我不确定你真正需要分配什么值
NLS_NUMERIC_CHARACTERS
。请注意,通过引用 shell 可用的单引号字符'
,您应该得到您想要使用的值。如果使用 '*' 或其他正则表达式字符,这可能会导致问题。
您可能会发现它sqlldr.exe
有一个完全不同的名称。可执行命令的 linux/unix 约定不需要
.exe
扩展名,所以我使用了sqlldr
. 只需使用您在安装目录中找到的程序的全名即可。
带有的行#!/bin/bash
必须是文件中的第一行,没有前导空格。
您还需要通知您的操作系统该脚本是可执行的。从 bash cmd 行,在包含此脚本的目录中,执行
chmod 755 mySQLLDR_runningScript
最后,不知道你为什么cmd
在你的 .bat 文件的末尾,要打开一个新窗口?您需要在系统上进行试验以找到正确的 cmd 来执行此操作。也许xterm
。
我希望这有帮助。