我有运行良好的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复制到其他服务器时。它运作良好。
任何人都可以帮我理解发生了什么吗?
由于
答案 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结尾。
你是如何复制脚本的?