0

簡単な.batファイルがあります

@echo; set nls_lang=russian_cis.ru8pc866  
@echo off

SET NLS_NUMERIC_CHARACTERS=. '


sqlldr.exe userid=PRB/0611@TSESTDB control=control_file.ctl LOG=fdb_log.log errors=100

cmd

UNIXベースのPCで実行するには、.shファイルに変換する必要があります。「 BASHProgramming-IntroductionHOW-TO」(初心者に適していますか?)を読み始めましたが、これは一時的な作業であり、締め切りが迫っています。

誰かが私がファイルを変換するのを手伝ってもらえますか?どうもありがとう!!!

4

1 に答える 1

1

スクリプトを書き直します。

  #!/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

あなたのコードは残しましたが、コメントアウトしました (シェル コメント文字 '#' を使用)。コメント解除された行は、.bat 構文を Linux/Unix bash/shell 構文に「変換」したものです。

上記のいくつかの修正が必要な場合があります。

  1. PATH のリセットに正しい値を含める必要があります。そこにある値は厳密に問題を説明するためのものであることに注意してください。 export現在のシェル (シェル スクリプト) で設定された変数が、シェル スクリプトから実行される子プロセスから見えるようにするために使用されます。この場合、重要なものはsqlldr

  2. 本当に必要な値が に割り当てられているかわかりません NLS_NUMERIC_CHARACTERS。シェルで使用できる単一引用符で引用すると、'意図したとおりの値が使用されることに注意してください。「*」またはその他の正規表現文字を使用すると、問題が発生する可能性があります。

  3. sqlldr.exeまったく別の名前であることがわかります。.exe実行可能コマンドの linux/unix 規則では拡張子は必要ないため、 sqlldr. インストールされたディレクトリにあるプログラムの完全な名前を使用してください。

の行は#!/bin/bash、先頭にスペースを入れずに、ファイルの最初の行にする必要があります。

また、スクリプトが実行可能であることを OS に通知する必要があります。bash コマンドラインから、このスクリプトを含むディレクトリで、

 chmod 755 mySQLLDR_runningScript

cmd最後に、 .bat ファイルの最後に新しいウィンドウを開く理由がわかりませんか? それを行うための正しいコマンドを見つけるには、システムで実験する必要があります。たぶんxterm

これが役立つことを願っています。

于 2012-04-25T18:48:47.627 に答える