如何在没有反引号评估的情况下获取Bash脚本中的目录权限?

时间:2013-03-12 20:15:33

标签: bash file unix permissions

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

var=`command`
[test value of var]

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

我想我可以在/ tmp辅助功能的反引号命令之前进行测试,并相应地更改脚本的行为。不过,我找不到一个好办法。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

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

因此,您可以使用test -d /tmp检查/tmp是否为目录,或使用test -w /tmp来测试/tmp是否可写。

您也可以使用[作为test的同义词,例如

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

在bash中查看help test。它解释了所有可用的测试。

另一件事:有时可以告诉程序哪个目录用于sort -T /home/user/tmp中的临时数据,有时他们会看到TMPDIR环境变量。取决于你在反引号中执行的程序。

答案 1 :(得分:3)

if [[ -w /tmp ]]...将测试当前用户是否具有/tmp的写入权限。

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

export TMPDIR="$HOME"

可能会奏效。

另一方面,反引号通常被认为是不推荐使用的。请改用var=$(command)