4

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

谢谢

4

5 回答 5

7

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

  1. 在命令行(有效)上,执行which cp
  2. 不管是什么回复,然后复制它并cp在脚本中使用它(例如/bin/cp
  3. 检查widcard扩展,运行你的脚本,bash -x script-name看看你是否得到了你所期望的。
  4. echo $?在脚本中的副本之后 - 如果它为零,那么它(认为它)起作用了。
  5. 从你的脚本中做一个ls -ld /var/www/ksite/app,也许有人设置了一个符号链接?
  6. 如果仍然失败,请从命令行获取脚本并查看是否有效. script-name
  7. 仔细检查副本确实失败了!(也许这应该是第 1 步。)
于 2012-07-04T13:00:33.920 回答
2

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

#!/usr/bin/env bash

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

于 2012-07-04T12:16:22.243 回答
1

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

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

  2. 我复制了文件,它在脚本中对我有用的唯一方法是cp <source_dir>/fileName <dest_dir>/fileName在命令行中也能cp <source_dir>/fileName <dest_dir>很好地工作。

于 2014-03-06T16:15:57.173 回答
0

仅涵盖所有基础..权限在执行之间是否有所不同..即您是否以 sudo/root 权限执行一个,另一个以用户身份执行(不太可能,但我想我会问,因为我们不知道确切的错误是什么是)

于 2012-07-04T14:52:15.567 回答
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

......它奏效了。多么奇怪的问题。我一时不知所措。

于 2021-06-21T07:22:49.913 回答