Bash脚本创建Temp目录并复制某些文件时出错

时间:2016-08-05 01:37:25

标签: bash mktemp

我正在尝试创建一个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搞砸了但是无法使它工作。

2 个答案:

答案 0 :(得分:0)

你需要修改你的脚本,如下所示:第一行只是赋值而不是你需要在子shell中运行它并分配。

#!/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

答案 1 :(得分: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"

其余的去这里......