云服务器上的cpanel shell脚本没有这样的文件或目录

时间:2017-07-24 20:18:02

标签: linux bash shell centos

我有一个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用户?

1 个答案:

答案 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