捕获 git 命令的输出?

2023-12-26

我正在编写一个脚本来自动为我设置新项目。

这包括拉取 github 存储库。

我想做的是从我的脚本中获得一些输出,然后调用git clone $repo

我想在该命令运行时显示该命令的输出,但是当它运行时,如果它已成功运行,则将其输出替换为(仅注意 git 命令输出,我仍然希望之前的输出存在)repository successfully cloned如果失败,请将输出保留在那里,然后打印repository cloning failed.

我怎样才能做到这一点?

下面是我当前(相当简单)的脚本。

#! /bin/bash

# -p project name

templateurl="[email protected] /cdn-cgi/l/email-protection:xxx/xxx-site-template.git"

while getopts ":p:" opt; do #eventually I'll add more options here

case $opt in
  p)
    project=$OPTARG
    ;;
  \?)
    echo "Invalid option: -$OPTARG" >&2
    exit 1
    ;;
  :)
    echo "Option -$OPTARG requires an argument." >&2
    exit 1
    ;;
esac
done

if [ -z "$project" ]; then
    echo "Project name required"
    exit 1
fi

clear
echo "|==========================|"
echo "| New xxx Project Creator  |"
echo "|==========================|"
echo "Project: $project"

if [ -d "$project" ]; then
    echo "Directory $project already exists!"
    exit 1
fi


mkdir $project
if [ ! -d "$project" ]; then
    echo "Failed to create project directory!"
    exit 1
fi

echo "Cloning xxx Template repository"
git clone $templateurl $project

git clone是否提供了可以用 $ 读取的退出代码?如下:

git clone user@server:repo
echo $?

如果一切正常,这将打印 0。例如,如果该文件夹不是 git 存储库,您将得到退出代码 128。

您可以按如下方式检查克隆是否有效:

git clone user@server:repo localrepo --quiet
success=$?
if [[ $success -eq 0 ]];
then
    echo "Repository successfully cloned."
else
    echo "Something went wrong!"
fi

--quiet只要没有错误,就会抑制 git 的任何输出。因此,如果您只删除 else-branch,您将得到正输出或 git 产生的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获 git 命令的输出? 的相关文章

  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 命令运行时从 shell_exec 命令获取输出

    我正在编写一个 PHP 脚本网页 该网页旨在接受先前上传到服务器的 JFFS2 图像的文件名 然后 该脚本将使用映像重新刷新服务器上的分区 并输出结果 我一直在用这个 tmp shell exec update flash v filena
  • Bash 脚本:#!/bin/bash 是什么意思? [复制]

    这个问题在这里已经有答案了 在 bash 脚本中 什么是 bin bash第一行是什么意思 UPDATE 有区别吗 bin bash and bin sh 这就是所谓的shebang http en wikipedia org wiki S
  • 如何显示 NUL 分隔数据的中间管道结果?

    如何组合以下两个命令 find print0 grep z pattern tr 0 n find print0 grep z pattern xargs 0 my command 进入单个管道 如果我不需要 NUL 分隔符那么我可以这样做
  • 如何在 bash 中结合超时和 eval 命令

    为了执行存储在变量中的命令eval使用命令 gt a echo e a nb wc l gt eval a 2 但如何才能与它结合起来呢 timeout命令 我尝试过以下操作 这给了我错误的输出 gt timeout 10 a a b wc
  • 在 shell 脚本中连接命令字符串

    我正在维护一个现有的 shell 脚本 它将命令分配给 shell 脚本中的变量 例如 MY COMMAND bin command dosomething 然后接下来 它通过执行以下操作将 参数 传递给 MY COMMAND MY ARG
  • 如何替换“docker run”命令中的变量值

    我正在使用 bash 脚本并尝试分配指纹值 如下所示 export FINGERPRINT D0 19 C5 80 42 66 56 AC 6F docker run rm i v var run docker sock var run d
  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b
  • bash 中的“declare -r”和“readonly”有什么区别?

    在 bash 中 有什么区别declare r and readonly declare r a a1 readonly b b1 我不知道该选择哪个 tl dr readonly使用默认范围global甚至在函数内部 declare使用范
  • 目录 * 和文件顺序

    我需要将目录中的所有文件连接到一个文件 但具有指定名称的文件必须位于输出的顶部 只是在做cat gt result将按字母顺序连接所有文件 有什么办法告诉猫放置文件vars css或任何其他输出的开头 现在我只是重命名文件需要首先000 f
  • 如何在 sed 中转义方括号[重复]

    这个问题在这里已经有答案了 我正在使用 grep 和 sed 解析遗留的 C 代码 当尝试替换方括号时 发生了一些奇怪的事情 以下代码替换方括号效果很好 echo xyx xzx xyx sed s g 结果是 xyx xzx xyx 当我
  • 为什么我不能将 sed 的输出重定向到文件

    我正在尝试运行以下命令 someprogram tee dev tty sed s 2 gt output file 但当我去查看时 该文件始终是空白的 如果我删除 gt output file从命令末尾 我可以看到 sed 的输出 没有任
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的
  • 在 android 中使用 MediaStore.ACTION_IMAGE_CAPTURE 意图捕获图像

    我正在使用 MediaStore ACTION IMAGE CAPTURE 意图捕获图像 它在大多数设备上运行良好 但它无法按预期在某些最新的 Android 设备中正常工作 我的目的是使用相机捕获图像并将其发送到服务器 但不将该图像存储在
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm

随机推荐

  • 如何检测套接字断开连接? / 如何调用带有超时的socket.recv?

    我正在使用 gevent 修补套接字连接到流媒体服务器 并且我正在使用 adsl 连接 我不控制服务器 但在我的测试中 如果我停止服务器 我可以通过检查recv的结果是否为空字符串来检测断开连接 但如果我关闭adsl调制解调器recv永远不
  • 具有多个因子组的 x 轴 ggplot

    我是 R 的新手 我有气候数据 如下面几行所示 数据表明相对于历史气候的温度变化 我想创建一个箱线图 ggplot 如下所示 我正在尝试弄清楚如何创建这种情节 任何帮助将不胜感激 DATE TMAX TMIN 1 1 2010 2 9275
  • PHP:如何按字母顺序对数组的值进行排序?

    我想在 PHP 中按字母顺序对数组的值进行排序 如果所有值都以相同字符开头 则应使用第二个字符对它们进行排序 依此类推 忽略大小写 例如 before values 0 programming values 1 Stackoverflow
  • 如何从 Azure 函数 url 中删除“api”一词

    当您创建 Http 触发的 API 时 Azure 函数将其托管在 https function app name azurewebsites net api Route configured in application 有没有办法从 U
  • 将 Unity WebGL 项目导入 Angular2 组件

    我正在寻求将 Unity WebGL 项目集成到 Angular2 应用程序中 将所有这些脚本移动到 Angular2 组件中的正确方法是什么 首先 Unity WebGL 导出一个index html 如下所示
  • Spring什么时候在bean的生命周期中创建代理?

    如果我使用 Spring AOP 在 applicationcontext 生命周期代理的哪个点被创建 bean 实例创建后 它们会运行一系列的操作Bean后处理器 http static springsource org spring d
  • Rails4中的嵌套简单表单 - 有很多通过,保存多个记录

    我通过关系得到了一个标准的 has many 人类通过一个连接表与许多兽人进行交互 交互只是一个表格和模型 没有控制器或视图 使用 Rails 4 中的 simpleform gem 我想从人类页面创建一个表单 以便从所有兽人池中选择多个兽
  • 实体框架添加现有项目导致克隆

    我正在将实体框架 v4 用于一个小项目 通常我使用 NHibernate 我的问题是 我无意中添加了一个已保存到 DB Context 集合中的对象的代码 当我执行 SaveChanges 时 EF 复制了该对象 并为其提供了一个新的主键
  • 弹出模式在页面顶部被切断

    这是模态的现场演示 https cdn rawgit com Twinbird24 tbk popup 8fb4e760 index html 它应该在几秒钟后打开 更新 此链接现在显示完成的版本 这是包含所有文件的 GitHub 存储库
  • 通过ssl从celery连接到redis后没有响应

    我正在跟进this https blog miguelgrinberg com post using celery with flask教程 并将 Celery 后台相关代码调整到我的项目中 就我而言 我在 Docker 环境中运行 并且我
  • Google Drive Rest Api 文件导出限制

    我使用休息 API https www googleapis com drive v3 files fileId export https www googleapis com drive v3 files fileId export 参考
  • CakePHP:如何使分页器组件使用不同计数?

    我正在使用以下代码进行简单的分页 paginate array limit gt 30 fields gt array DISTINCT Doctor id Doctor order gt array Doctor id gt desc j
  • 在 lucene 中索引布尔值的最佳选择是什么?

    在lucene中索引一个布尔值 true false 不需要存储 我想要获得更多的磁盘空间使用率和更高的搜索性能 doc add new Field boolean true Field Store NO Field Index NOT A
  • Ecto 查询和具有可变数量的自定义 MySQL 函数

    我想执行如下查询 SELECT id name FROM mytable ORDER BY FIELD name B A D E C FIELD http dev mysql com doc refman 5 7 en string fun
  • 对于流行的 Java 库来说,“附加源代码”是否可以变得更容易?

    当我的调试器进入某个类文件时 我遇到了这个障碍 无相应来源 找到它通常很困难 您必须搜索托管相应项目的站点 并找到它的 下载源 页面 例如 上次我搜索 对于 JPA API 我花了几个小时才获取源代码 或者 你可能 需要从修订控制中检查出来
  • 如何确定AWS资源属于哪个CloudFormation堆栈?

    boto3 中是否有可靠的方法来确定 AWS 资源属于哪个 CloudFormation 堆栈 或者它是否属于堆栈 假设我有一个 DynamoDB 表或一个 EC2 实例 我如何找出它属于哪个堆栈 CloudFormation 的 boto
  • 10秒后下载文件

    我创建了一个下载页面 其中包含一个文件的链接 我希望该文件在 10 秒后自动下载 但我不确定如何执行此操作 文件的链接存储在 cookie 中 可在下载页面上访问并存储在 file 变量中 该文件的链接将类似于以下内容 这指向该文件并包含要
  • 您可以通过编程方式访问当前的 Heroku dyno id/名称吗?

    在 Heroku 上 您能否以编程方式从应用程序内获取当前执行代码的测功机的某种标识符 例如 dyno 名称 例如 web 1 或 worker 1 或其他一些 id 如果是的话 如何在 Java 中做到这一点 总是有机器的主机名 看起来像
  • 如何查明 Oracle 表上次更新时间

    我能否查出对 Oracle 数据库中的表执行最后一条 INSERT UPDATE 或 DELETE 语句的时间 如果是 如何查明 一点背景知识 Oracle 版本是 10g 我有一个定期运行的批处理应用程序 从单个 Oracle 表中读取数
  • 捕获 git 命令的输出?

    我正在编写一个脚本来自动为我设置新项目 这包括拉取 github 存储库 我想做的是从我的脚本中获得一些输出 然后调用git clone repo 我想在该命令运行时显示该命令的输出 但是当它运行时 如果它已成功运行 则将其输出替换为 仅注