【问题标题】:Cloning a git repo with a shell script - Shell adds a space after ".git"?使用 shell 脚本克隆 git repo - Shell 在“.git”之后添加一个空格?
【发布时间】:2020-08-25 08:03:39
【问题描述】:

我正在尝试做一个非常简单的任务,即克隆一个 git repo 并 cd 到其中。

我有这个 shell 脚本:

#!/bin/bash
# Clone a git repository, and go into it
git clone git@someNumbers:myGitRepo.git
cd myGitRepo

当我运行它时,shell 认为 git repo 是“clone git@someNumbers:myGitRepo.git”(有空格,我确定我的代码中没有空格)!

和输出:

Cloning into 'myGitRepo.git '...

什么时候应该说:

Cloning into 'myGitRepo'...

我还尝试将两个命令(一次)复制粘贴到命令提示符下,但同样会失败。只有单独运行它,或者在最后不使用 linebrake 的情况下复制粘贴它,才能成功克隆 git repo。

这里发生了什么?如何编写一个可以克隆 git 存储库的简单 shell 脚本?

【问题讨论】:

  • 这是您脚本的实际复制/粘贴吗?我怀疑最后有一些类似 Unicode 空格的字符没有出现在这里。检查od -tx1c myscript.sh的输出以确保。
  • 您可能想阅读以下内容:unix.stackexchange.com/questions/102008/…
  • 这会在 Windows 上发生吗?检查您用于编辑脚本的编辑器是否使用 Uniw 行尾 (LF) 而不是 Windows 行尾 (CR LF) 保存文件
  • @Thomas 我照你说的做了,那里确实有一些字符,输出如下:. g i t 342 200 213 \n c d
  • 那么@Thomas 是好是坏?

标签: git shell


【解决方案1】:

在您写的 cmets 中,od -tx1c myscript.sh 显示 . g i t 342 200 213 \n c d。那是 U+200B ZERO WIDTH SPACE 的 UTF-8 编码,显然它不被 shell 识别为空格。

如果您在编辑器中看不到它,只需删除整行,包括末尾的换行符,然后从头开始输入。

【讨论】:

  • 谢谢!这解决了问题,因为我从一个地方复制了一些我使用的代码。一定是我有那些奇怪的角色的原因。
猜你喜欢
  • 2021-04-17
  • 2013-10-31
  • 2021-06-11
  • 2018-04-17
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多