复制后bash脚本无法正常工作

时间:2016-08-10 14:59:10

标签: linux bash shell

我有运行良好的bash脚本。让我们说/usr/local/app1/aaa.sh

我复制到/usr/local/app2/aaa.sh

如果我从app2运行它,它会抛出错误消息

: command not foundts.sh: line 10:
: command not foundts.sh: line 17:
: command not foundts.sh: line 19:
: command not foundts.sh: line 26:
: command not foundts.sh: line 30:

当我复制到我当地的办公桌然后复制回/usr/local/app3/aaa.sh时也会发生这种情况。

但不知何故,当我用scp复制到其他服务器时。它运作良好。

任何人都可以帮我理解发生了什么吗?

由于

2 个答案:

答案 0 :(得分:1)

看起来你的代码中有一个相对(而不是绝对)引用到foundts.sh。

我猜测,foundts.sh是另一个自定义脚本,存在于服务器上与本地方框相同的相对目录中,并且相应引用,比如./foundts.sh而不是/usr/local/app2/foundts.sh

将调用脚本移动到其他文件夹时,相对路径不再指向文件的实际位置。

答案 1 :(得分:1)

在我看来,你的文件副本有DOS / Windows风格的行结尾(回车后跟换行)而不是unix风格的行结尾(只是换行);这会使shell混乱很多,因为它认为回车是命令的一部分(导致命令未找到错误)并且还会出现乱码错误消息。

您可以通过打印脚本文件进行检查。 cat -vet /usr/local/app2/aaa.sh - 如果行以" ^ M $"结尾它有DOS / Windows结尾,如果它们只是" $"它有unix结尾。

你是如何复制脚本的?