0

我正在更新 z/OS 中的 Bash 脚本。当前脚本使用反引号命令的结果来测试某个条件,如下所示:

var=`command`
[test value of var]

问题是一位客户无权访问 /tmp 目录,并且 z/OS 使用 /tmp 中的文件来保存反引号命令的中间数据。

我想我可以在 /tmp 可访问性的反引号命令之前进行测试,并相应地更改脚本的行为。不过,我没有找到这样做的好方法。有什么建议么?

4

2 回答 2

4

在 bash 中,您可以使用test内置来测试文件权限。

所以你可以test -d /tmp用来检查是否/tmp是一个目录或test -w /tmp用来测试/tmp你是否可以写。

您也可以将 the[用作testlike in的同义词

if [ -d /tmp -a -w /tmp ] ; then 
    echo "/tmp is a directory and writable"
fi

help testbash。它解释了所有可用的测试。

另一件事:有时可以告诉程序将哪个目录用于临时数据,例如 in sort -T /home/user/tmp,有时它们尊重TMPDIR环境变量。取决于您在反引号中执行的程序。

于 2013-03-12T20:36:54.683 回答
3

if [[ -w /tmp ]]...将测试当前用户是否具有对/tmp.

可能还有另一种选择。我没有 z/OS,但一些 UNIX 有一个TMPDIR可以设置为临时目录的变量,例如:

export TMPDIR="$HOME"

可能会奏效。

另一方面,反引号通常被认为已被弃用。改为使用var=$(command)

于 2013-03-12T20:37:08.053 回答