我有一个 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}.$$
它将允许用户级清理。