我有一个非常简单的shell脚本
#!/bin/bash
cp -rf /var/www/ksite/app2/* /var/www/ksite/app
echo "----"
echo "done"
但是似乎cp命令失败了
如果我执行
cp -rf /var/www/ksite/app2/* /var/www/ksite/app
从终端操作一切正常。请问有人可以告诉我如何在Shell脚本中包含cp命令吗?
谢谢。
which cp
cp
(例如/bin/cp
)bash -x script-name
运行您的脚本,看看是否得到您期望的结果。echo $?
- 如果为零,则它(认为它)已正常工作。ls -ld /var/www/ksite/app
,可能有人设置了符号链接?. script-name
bash -x script-name
命令生效了?太好了!也许你的#!
行有误,请参考@unwind的回答。另外,也可能是你的Bash脚本不是从PHP运行的。PHP程序有时会在奇怪的环境中运行(出于安全原因),你是否在使用受限制的shell?顺便说一句,如果最开始就提到了PHP,可能会更有帮助。 - cdarke我也遇到过类似的问题,以下是帮助我的方法:
我使用Windows和putty编写脚本,因此每行末尾都有\r\n。请确保你只有\n符号。
我复制文件时,唯一可在脚本中正常工作的方法是:cp <source_dir>/fileName <dest_dir>/fileName
,而在命令行中 cp <source_dir>/fileName <dest_dir>
也可以正常运行。
类似于Vladmir的问题,脚本是在Windows中创建的。我在Linux环境中使用VIM创建了一个新文件“my_bash_script.sh”,然后将我的脚本内容读入该文件:
:r file_made_in_windows.sh
然后我保存、关闭,并将文件设置为可执行:
chmod 744 my_bash_script.sh
从那里,我运行了脚本:
./my_bash_script.sh
...然后它就工作了。多么奇怪的问题。我曾经困惑了一会儿。
只是为了确保万无一失... 权限是否在执行之间有所不同.. 例如,您是否使用sudo/root权限执行一个,而使用用户权限执行另一个(虽然不太可能,但我想问一下,因为我们不知道确切的错误是什么)
cp
会失败? - rushcp
肯定在路径上,不是吗? - Levon