0

私はこのようなスクリプトをアプリケーションのアップグレードに使用します。

#!/bin/sh
tar fUxz data.tar.gz --overwrite
tar fd data.tar.gz >$0.diff
if [ -s $0.diff ]
then
  mv $0.diff $0.out
else
  echo "ok" >$0.out
fi

抽出/上書きが失敗した場合に備えて、*。outファイルにエラーメッセージを入れたいです。私のディレクトリにはファイルf1.lmsがありました:

-rw-r--r--+  1 user1 wheel    27777 Jun 16  2010 f1.lms

スクリプト実行後:

-rw-r--r--+  1 user1 wheel    27777 Mar 20 14:29 f1.lms

そして、私は.outでそのようなメッセージを受け取りました:

f1.lms: Mode differs
f1.lms: Uid differs
f1.lms: Gid differs

理由は何ですか?それは抽出が失敗したことを意味しますか?「OK」を取得するにはどうすればよいですか?

しかし、Pythonスクリプト(pexpect)からこのスクリプトを呼び出すと、別のメッセージが表示されます。

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors

ファイルが抽出されているのがわかりますが、「Mode/..different」という警告はありません-diffコマンドが機能しないようです。

How to make this script working - both simply as shell script and from the python?

4

0 に答える 0