0

Temp ディレクトリを作成し、そこにファイルをコピーし、処理を行い、ディレクトリを削除しようとしています。これまでのところ、私は持っています:

#!/usr/bin/env bash

__tmpdir="mktemp -d /Users/Riwaz/support.XXXXXXXXXX" #Create temp directory; store address
cp /some_location/checkstyle.xml $__tmpdir #Copy a file into the directory
cd $__tmpdir
tar -czvf result.tar.gz *
cp result.tar.gz /Users/Riwaz/
rm $__tmpdir

しかし、このように sh を使用して実行すると、次のようになります。

line 7: cd: mktemp: No such file or directory
rm: mktemp: No such file or directory
rm: -d: No such file or directory
rm: /Users/Riwaz/support.XXXXXXXXXX: No such file or directory

これは、mktemp ステートメントが処理されず、変数がアドレスではなく実際のコマンドを保持することを示しています。bash でコマンドを評価し、代わりにアドレスを保存するにはどうすればよいですか? ""、{}、および eval をいじりましたが、機能しませんでした。

4

2 に答える 2

0

mktemp は成功すると 0 で終了し、エラーが発生すると >0 になります。. このようなことを試してください。十分な権限があることを確認してください:

 tempfoo=`basename $0`
           TMPFILE=`mktemp -d /tmp/${tempfoo}.XXXXXX`
           if [ $? -ne 0 ]; then
                   echo "$0: Can't create temp file, exiting..."
                   exit 1
           fi

そのため、スクリプトは、exit > 0. ここから、あなたはただすることができます&& cd tempfoo and echo $PWD || echo "can not access $ tempfoo"

残りはここに...

于 2016-08-05T02:41:49.077 に答える
0

以下のようにスクリプトを変更する必要があります。

#!/usr/bin/env bash
__tmpdir=(mktemp -d /Users/Riwaz/support.XXXXXXXXXX) #Create temp directory; store address
cp /some_location/checkstyle.xml $__tmpdir #Copy a file into the directory
cd $__tmpdir
tar -czvf result.tar.gz ./*
cp result.tar.gz /Users/Riwaz/
rm $__tmpdir
于 2016-08-05T01:51:49.760 に答える