1

私は多くの pre fs/db タスクを自動化しようとしていますが、私が発行したコマンドが本当に発生したかどうかわからないというバグがあります。そのコマンドの実行による何らかのリターン コードを監視できる方法が必要です。rmアクセス許可が拒否された、または何らかのエラーが原因で失敗した場合。発行するexit..

そのようなシェルスクリプトがある場合:

rm /oracle/$SAPSID/mirrlogA/cntrl/cntrl$SAPSID.ctl;

疑似コードは次のようなものである可能性があります..

rm /oracle/$SAPSID/mirrlogA/cntrl/cntrl$SAPSID.ctl;
if [returncode == 'error']
  exit;
fi

たとえば、そのrmコマンドを実行して、rm'dでない場合は終了するにはどうすればよいですか。sed -i -e、およびcpなどの他の複数のタイプのコマンドで実行するように回答を適応させますumount

編集:

次のような書き込み保護されたファイルがあるとします。

$ ls -lrt | grep protectedfile
-rwx------ 1 orasmq  sapsys         0 Nov 14 12:39 protectedfile

また、以下のスクリプトを実行すると、明らかに権限がないため、次のエラーが生成されます..

rm: remove write-protected regular empty file `/tmp/protectedfile'? y
rm: cannot remove `/tmp/protectedfile': Operation not permitted

これがあなたの皆さんの答えから私が考え出したものです..これはこのようなことをする正しい方法ですか? また、エラーrm: cannot remove /tmp/protectedfile': Operation not allowed` をログファイルにダンプするにはどうすればよいですか?

#! /bin/bash
function log(){
    //some logging code, simply writes to a file and then echo's out inpit
}
function quit(){
   read -p "Failed to remove protected file, permission denied?"
   log "Some log message, and somehow append the returned error message from rm"
   exit 1;
}

rm /tmp/protectedfile || quit;
4

3 に答える 3

1

あなたが何を望んでいるかを正しく理解している場合は、これを使用してください:

rm blah/blah/blah || exit 1
于 2013-11-14T17:54:48.990 に答える