捕获 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 命令的输出? 的相关文章

  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Bash - 如何将参数传递给通过标准输入读取的脚本

    我正在尝试从标准输入执行脚本并将参数传递给它 有办法做到吗 假设我有以下内容 cat script sh bash 我如何将参数传递给脚本 我不想这样做 bash script sh arguments 也不是这个 script sh ar
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • ANSI 转义码在行尾有奇怪的行为

    重现步骤 考虑以下 shell 命令 echo e e 41mTest nTest2 e 0mTest3 它打印Test并在下一行中Test2具有红色背景 使用 ANSI 转义码 Test2后面直接是Test3这是无色的 行为 第一次执行此
  • 执行 rvm use 2.0.0 --default 时收到“警告!路径未正确设置”

    以上第一次不起作用 第二次起作用 尝试将任何新 shell 窗口的 ruby 版本设置为 2 0 0 Doing rvm use 2 0 0 default gives Warning PATH is not properly set up
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • MP4 到 DASH(bash 脚本)

    我有一个网站 用户可以在其中上传视频文件 我想使用 DASH 流式传输所有内容以获得自适应比特率流式传输 因此 我编写了一个 bash 脚本 由 cron 运行 将所有 mp4 文件转换为 DASH 但它无法正常工作 出了什么问题 例如 使
  • 使用 mkfifo 和传输流,这可能吗?

    我想执行一个 bash 脚本来执行以下操作 应用程序 ffmpeg 生成实时传输流 ts 文件 我需要处理这个实时流 执行解复用等 现在我知道这必须通过 FIFO 来完成 但这是我的任务 我需要重定向 ffmpeg 的输出以写入 fifo
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 从 Ruby 运行 shell 命令:在显示输出时捕获输出?

    我有个问题 我想从另一个 ruby 脚本运行一个 ruby 脚本并捕获它的输出信息 同时让它也输出到屏幕上 runner usr bin env ruby print Enter your password password gets ch
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • Bash 脚本:#!/bin/bash 是什么意思? [复制]

    这个问题在这里已经有答案了 在 bash 脚本中 什么是 bin bash第一行是什么意思 UPDATE 有区别吗 bin bash and bin sh 这就是所谓的shebang http en wikipedia org wiki S
  • C++ 输出到文本文件时换行符[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这只是一个简单的问题 但我正在尝试将
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • 如何显示 zsh 函数定义(如 bash“type myfunc”)?

    如何在 zsh 中显示函数的定义 type foo没有给出定义 在bash中 bash function foo echo hello bash foo hello bash type foo foo is a function foo e
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • powershell stdin 管道和重定向

    你好 我一直在制作一个小的跨平台脚 本 我可以将其卷曲并通过管道传输到bash和Powershell中 基本思想是服务器向解释器发送一个命令 然后它给出一个命令将所有输出重定向到标准输出 bash 中的一个例子是 some commands
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u

随机推荐

  • 如何检测套接字断开连接? / 如何调用带有超时的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 我想在该命令运行时显示该命令的输出 但是当它运行时 如果它已成功运行 则将其输出替换为 仅注