0

エラーが発生すると、「ONCALL.bat」ファイルが実行され、別の oncall.txt テキスト ファイルに保持されているサポート情報が表示される単純な Windows バッチ ファイルがあります。これが私たちの SOP です。

ONCALL.BAT :

set scriptpath=%~dp0

TYPE "%scriptpath%oncall.txt"

私は Unix およびシェル スクリプトの経験がなく、Unix 環境で実行するのと同等のシェル スクリプトをすぐに提供する必要があります。

誰かがこのコードに相当する .sh を提供してくれませんか?

4

2 に答える 2

1
cat oncall.sh
#!/bin/bash
scriptpath=/path/to/scripts

cat ${scriptpath}/oncall.txt

ファイルを作成したら、実行しても害はありません

 dos2unix oncall.sh

Windows の Ctrl-M 文字が、Unix スクリプトの処理を台無しにする方法を完全に混乱させるようなものではないことを確認してください。

それから

 chmod 755 oncall.sh

スクリプトを実行可能にします。

で確認

  ls -l oncall.sh

次のようなリストが表示されるはずです

-rwxr-xr-x 1 userName grpname  5263 Nov 21 14:44 oncall.sh

最後に、完全パスまたは相対パスを指定してスクリプトを呼び出します。

  ./oncall.sh

また

  $PWD/oncall.sh

最初の行は「shebang」行と呼ばれ、スクリプトが呼び出されると、OS はファイルの最初の行を読み取り、スクリプト ファイルの残りの部分を解釈するために実行するプログラムを見つけます。

次のいずれかを最初の行「shebang」として使用する必要がある場合がありますが、bash が適切な推測です

 #!/bin/ksh
 #!/bin/sh
 #!/bin/ash
 #!/bin/dash
 #!/bin/zsh

または、最悪の場合、シェルが非標準のディレクトリにある場合は、それを詳しく説明する必要があります。

 #!/usr/bin/ksh

すべてのシェルは、トレースおよび次のような変数展開のデバッグ引数をサポートします

  #!/bin/ksh -vx

または、特定の行だけをラップして、次のようにデバッグのオンとオフを切り替えることができます

  set -vx
   cat ${scriptpath}/oncall.txt
  set +vx

とすれば

% と 0 の間の ~dp 特殊構文は、基本的に、変数 %0 を展開してドライブ文字とパスを表示するように指示します。これにより、バッチ ファイルを含む現在のディレクトリが得られます。

Unixにはドライブ文字がないため、これは/path/to/scripts合理的な代替品であり、直接的な代替品になると思います。scriptpath=$PWD問題は、UNIX PATH var に依存してスクリプトを見つけるか、相対パスを使用してcd /path/to/scripts実行し、 PATH に値を追加せずにファイルを見つけることです。./oncall.sh./

IHTH。

于 2012-11-21T20:12:15.727 に答える
1

ヘルプ ファイルとスクリプトが同じディレクトリにあると仮定します。

#!/bin/sh

SCRIPTPATH=`dirname "$0"`

cat "$SCRIPTPATH"/oncall.txt

$0現在のスクリプトのファイル パスです。コマンドはdirnameそのディレクトリ部分を抽出します。こうすることで、スクリプト内のヘルプ ファイルにハードコードされたパスを使用することを避けることができます。

于 2012-11-21T20:14:00.170 に答える