我正在更新z / OS中的Bash脚本。当前脚本使用反引号命令的结果来测试某个条件,如下所示:
var=`command`
[test value of var]
问题是一个客户无法访问/ tmp目录,z / OS使用/ tmp中的文件来保存反引号命令的中间数据。
我想我可以在/ tmp辅助功能的反引号命令之前进行测试,并相应地更改脚本的行为。不过,我找不到一个好办法。有什么建议吗?
答案 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)
。