/tmp 下的文件权限被拒绝

/tmp 下的文件权限被拒绝

我有一个 bash 脚本,它读取文件名、选择数据、构建表,然后添加标题。不幸的是,在添加标头并提供输出文件时,我收到以下错误消息:

./big_table_rcp.sh: line 153: /tmp/out: Permission denied

它与以下行链接:

| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt

有谁知道如何授予对输出文件的访问权限?

答案1

您可能会收到权限错误,因为您没有访问/tmp/out/tmp目录的权限。

在有问题的行之前,添加一些内容,例如ls -l /tmp | grep out查看/tmp/out文件具有哪些权限。

此外,不要使用/tmp/out,而是使用mktemp.

tmpfile=`mktemp`
your code here | cat - out_${scenario}.txt > "$tmpfile" && mv "$tmpfile" ${gauge}_${scenario}.txt

man mktemp

安全地创建临时文件或目录,并打印其名称。

答案2

不要使用/tmp/out,但/tmp/out.$$在并发运行或剩余进程的情况下这不会发生冲突,更好的是,使用/tmp/out.${LOGNAME}.$$它将允许用户级清理。

相关内容