如果从shell脚本执行,则不会运行cp命令

时间:2012-07-04 12:06:06

标签: linux bash shell cp

我有非常简单的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吗?

由于

5 个答案:

答案 0 :(得分:5)

我们似乎怀疑这个脚本是如何失败的。如果没有错误消息,那么这是一个奇怪的消息。我建议:

  1. 在命令行(有效)上,执行which cp
  2. 无论回复是什么,请将其复制并将其用作脚本中的cp(例如/bin/cp
  3. 检查widcard扩展,使用bash -x script-name运行您的脚本,看看您是否得到了预期。
  4. 在脚本中复制之后
  5. echo $? - 如果它为零则它(认为它)起作用。
  6. 从您的脚本中执行ls -ld /var/www/ksite/app,也许某人设置了符号链接?
  7. 如果仍然失败,请从命令行中获取脚本,看看它是否有效. script-name
  8. 仔细检查副本确实失败了! (也许这应该是第1步。)

答案 1 :(得分:1)

确保你真的在/bin/bash有bash。我认为一个击球手哈希爆炸是:

#!/usr/bin/env bash

这使用env命令来定位bash二进制文件并设置环境。

答案 2 :(得分:1)

我有类似的问题。是什么帮助了我:

  1. 我用windows和putty编写脚本,所以我在行尾有\ r \ n。请确保,您只有\ n符号。

  2. 我复制了文件,它在脚本上运行的唯一方法是cp <source_dir>/fileName <dest_dir>/fileName,而命令行cp <source_dir>/fileName <dest_dir>也运行良好。

答案 3 :(得分:0)

只是覆盖了所有的基础..请求权限在不同之间进行..即你用sudo / root权限执行一个,另一个用户(不太可能,但我想我会问,因为我们不知道是什么确切的错误是)

答案 4 :(得分:0)

与在 Windows 中创建脚本的 Vladmir 类似的问题。我在linux环境下使用vim新建了一个文件“my_bash_script.sh”,然后将我的脚本内容读入文件中:

:r file_made_in_windows.sh

然后我保存,关闭,然后将文件设置为可执行文件:

chmod 744 my_bash_script.sh

从那里,我运行了脚本:

./my_bash_script.sh

...它奏效了。多么奇怪的问题。我一时糊涂了。

相关问题