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

但是当我使用 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

您需要修改您的脚本,如下所示: 第一行只是分配,而不是您需要在子 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
于 2016-08-05T01:51:49.760 回答
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 回答