我正在尝试将地址信息附加到文件中。我收到一条错误消息
tee:/OR_595.txt:权限被拒绝
我正在使用以下代码来创建该文件。
cstates=($(awk -v FS=^ '{print $5}' "$1"))
for i in "${cstates[@]}"
do
:
if [[ ! -f "./$2/$i/${i}_595.txt" ]]; then
echo "Making ${i}_595.txt File"
touch "./$2/$i/${i}_595.txt"
chmod a+x "./$2/$i/${i}_595.txt"
else echo "File ${i}_595.txt already exists"
fi
done
此代码正在写入文件。
file_name="$1"
while IFS=^ read -r company_name address1 address2 city state zip phone
do
printf "Company Name: %s\nCompany Address: %s%s, %s, %s, %s\nCompany Phone Number: %s\n\n" \
"${company_name}" "${address1}" "${address2}" "${city}" "${state}" "${zip}" "${phone}" | tee -a "${outputdir}/${state}_595.txt" > /dev/null
done < $file_name
我已经检查了每个文件夹、子文件夹和文件的权限
drwxrwxr-x 56 jh78454 jh78454 4096 Feb 19 14:58 States
drwxrwxr-x 2 jh78454 jh78454 4096 Feb 19 15:14 WA
-rwxrwxr-x 1 jh78454 jh78454 0 Feb 19 15:14 WA_595.txt
我通过 WinSCP 查看了几个文件夹和文件的权限,它们都是相同的。不知道为什么我收到权限被拒绝的错误。
答案1
不知道为什么我收到权限被拒绝的错误。
显然${outputdir}
扩展为空字符串(变量未定义或为空)并${state}
扩展为OR
.这种方式${outputdir}/${state}_595.txt
扩展到/OR_595.txt
.
/OR_595.txt
指向OR_595.txt
根目录中名为 的文件/
。该文件可能不存在。普通用户无法在/
.
定义outputdir
so${outputdir}/${state}_595.txt
指向一个可以写入的文件。你用的是tee -a
这样或许设计是文件已经存在。我猜测第一个片段应该创建文件。它使用./$2/$i/
,因此您需要outputdir
在第二个片段中进行相应设置。