【问题标题】:Why can't I clone into this directory? [duplicate]为什么我不能克隆到这个目录? [复制]
【发布时间】:2017-07-18 21:00:12
【问题描述】:

我正在尝试编写一个 bash 脚本来克隆到一个名为“.janus”的非空目录。当我执行此脚本时:

#!/bin/bash

localFolder="~/.janus"
repository="git@github.com:aklt/plantuml-syntax.git"
git clone "$repository" "$localFolder"

我收到以下错误:

致命:目标路径 '~/.janus' 已经存在并且不是空的 目录。

我做错了什么?我可以查看 plantuml-syntax 目录是否已经存在,但事实并非如此。

如果我将脚本更改为:

#!/bin/bash

localFolder="$HOME/.janus"
repository="git@github.com:aklt/plantuml-syntax.git"
git clone "$repository" "$localFolder"

我收到以下错误:

致命:目标路径“/Users/user/.janus”已经存在并且不存在 一个空目录。

【问题讨论】:

  • 顺便说一句,您不能在 shell 的赋值中在 = 周围放置空格。这是shellcheck.net 会抓住的东西。
  • 顺便说一句——问题中的代码不包含实际的克隆操作,因此不会生成消息中包含的问题。今后,请尽量遵循minimal reproducible example 准则。
  • 我和@CharlesDuffy 在一起,我们需要查看代码。
  • 哎呀,我粘贴了错误的脚本 - 以上是更正的版本
  • 查看更新的版本——我猜你正在用你的脚本创建'~/.janus',然后交互地检查~/.janus,而两者并不相同(因为前者位于名为~ 的目录下,而后者位于您的主目录中)。

标签: git bash git-bash


【解决方案1】:

~ 放在引号中意味着它失去了它的特殊含义。

# ...you can either put that character **outside** the quotes...
mkdir ~"/.janus"

# ...or use $HOME instead.
localFolder="$HOME/.janus"

【讨论】:

  • 即使我使用 $HOME,我仍然遇到类似的问题@CharlesDuffy(更新了问题)
  • 请进一步更新问题(以显示您如何证明错误消息不正确——也就是说,该目录事先不存在)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2016-09-10
  • 2011-10-17
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多