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

标签 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 的路径 我已经为 copy_files 设置了 perms 和 user 以及 root 用户组.sh 我禁用了 php open_basedir 保护。

shell 脚本在/home/site2/

为什么我仍然没有得到这样的文件或目录有什么想法吗? 无论如何要检查 open_basedir 保护是否关闭说考虑到脚本由 root 拥有我不认为这是问题,除非它作为 site2 用户而不是 root 执行?

最佳答案

由于您使用 shell 扩展的方式,for 循环中的变量包含文件的绝对路径。拥有绝对路径意味着无需使用字符串操作 (%),也无需将“.csv”添加到文件名中,只需将其全部删除并提供要复制到的目录cp 的第二个参数,请参见下面的示例。

#!/bin/sh 对于/home/site1/public_html/admin/data/*.csv 中的 f;做 cp -v "$f"/home/site2/app/cron_jobs/data 完成

关于linux - 云服务器centos上的cpanel shell脚本没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289331/

相关文章:

linux - bash 脚本 LAMP 创建 "yes"

linux - debian 中未安装 libudev-dev

regex - 用 sed (或类似的)替换前导空格

Bash 十进制到 base 62 的转换

linux - 在父脚本中访问 shell 脚本返回的值

linux - UDP IP 分段和 MTU

linux - 如何在 IPv6 Linux 机器中安装缺少的库,yum 在这里不起作用

bash - 如何正确识别/传递 bash 参数

bash - 删除输入列表的可变部分

linux - 如何在此 shell 脚本上添加字符串名称?