bash:git pull仅在最后一个命令时有效

时间:2018-10-31 22:16:21

标签: linux bash git sh

平台:Raspberry Pi 3 B

请帮助我,git pull仅在最后一条命令有效,但我需要更早使用。这对我来说很奇怪,我没有找到任何解决办法


工作

script.sh

#!/bin/bash
echo Hello World
git pull

sh script.sh给出:

Hello World
Already up-to-date.

不起作用

script.sh

#!/bin/bash
echo Hello World
git pull
echo Hello World

sh script.sh给出:

Hello World
' is not a git command. See 'git --help'.


Did you mean this?
    pull
Hello World

2 个答案:

答案 0 :(得分:3)

文件的EOL格式(CRLF)错误。 CRLF是来自Windows应用程序上编写的文本文件的格式。 * NIX使用LF作为EOL分隔符,因此您的解释器在每一行的内容中都得到了一个奇怪的字符(CR),并将其作为您调用的命令的一部分传递给git ...这就是为什么它会中断的原因。运行dos2unix script.sh进行转换,以便可以正确读取。

答案 1 :(得分:0)

除了脚本中的引号或特殊字符外,没有其他原因。实际上,根据错误消息,它将Hello World视为git命令。

这就像你在说:

[vturlapati:~] $ git Hello World
git: 'Hello' is not a git command. See 'git --help'.

The most similar command is
    reflog
[vturlapati:~] $ git 'Hello World'
git: 'Hello World' is not a git command. See 'git --help'.

您可以仔细检查特殊字符吗?如果您使用的是vim,则可以执行:set list