2016-08-05 4 views
0

Tempディレクトリを作成し、ファイルをコピーして処理し、ディレクトリを削除しようとしています。Bashスクリプトで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を使いこなしましたが、それを動作させることはできませんでした。

+0

...ここに行くことができます。 – zee

答えて

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 
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の場合STDRのERROメッセージを与えるだろう。ここからあなただけの&& cd tempfoo and echo $PWD || echo "can not access $ tempfoo"

残りはエラーが発生した場合に成功すると0を出て、> 0 mktempを

関連する問題