我有一个shell脚本copy_files.sh,我每天使用cron作业调用一次。
然而,它从来没有工作过,我一直没有得到这样的文件或目录。
!#/bin/sh
for f in /home/site1/public_html/admin/data/*.csv
do
cp -v "$f" /home/site2/app/cron_jobs/data/"${f%.csv}".csv
done
我已经通过ssh检查了所有路径都是正确的我使用ls -l /bin/sh
将路径变为/ bin / sh我已经设置了perms,用户和组为root用于copy_files.sh我已经禁用了php open_basedir保护。
shell脚本位于/ home / site2 /
中为什么我仍然没有这样的文件或目录的任何想法? 无论如何检查open_basedir保护已关闭,表示考虑到脚本由root拥有我不会发现这是问题,除非它作为site2用户执行而不是root用户?
答案 0 :(得分:0)
由于使用shell扩展的方式,for循环中的变量包含文件的绝对路径。拥有绝对路径意味着不需要使用字符串操作(%),也不需要将“.csv”添加到文件名中,只需将它们全部删除并提供要复制的目录。您对cp的第二个参数,请参见下面的示例。
#!/bin/sh
for f in /home/site1/public_html/admin/data/*.csv; do
cp -v "$f" /home/site2/app/cron_jobs/data
done