小编l0b*_*0b0的帖子

同步保存stdout,stderr和stdout + stderr

出于测试目的,我想保存输出和错误分别通过随后的代码检查.例如,具有错误输入的测试运行应该导致输出到stderr,但是在stdout上没有输出,而具有正确输入的测试运行应该导致输出到stdout,但是没有输出到stderr.保存必须是同步的,以避免测试的竞争条件(因此我不能使用进程替换).

为了能够在事后调试测试,我需要在输出的序列中看到stdout和stderr.因此,我必须将它们保存到相同的文件/变量/任何/或者同时将它们发送到终端,以便单独保存它们.

为了测试发生了哪个错误,我需要命令的退出代码.

出于效率和准确性的原因,我当然不能每次测试两次.

例如,可以将stdout重定向到stdout.log,将stderr重定向到stderr.log,并将它们都重定向到output.log中的同一命令吗?或者为stdout和stderr分别使用同步 tee命令?或者将stdout和stderr的副本保存为单独的变量?

更新:看起来tim的解决方案几乎可以工作(修改为在终端上输出而不是记录到all.log):

$ set -o pipefail
$ {
    {
        echo foo | tee stdout.log 2>&3 3>&-
    } 2>&1 >&4 4>&- | tee stderr.log 2>&3 3>&-
} 3>&2 4>&1
foo
$ cat stdout.log
foo
$ cat stderr.log
$ {
    {
        echo foo >&2 | tee stdout.log 2>&3 3>&-
    } 2>&1 >&4 4>&- | tee stderr.log 2>&3 3>&-
} 3>&2 4>&1
foo
$ cat …
Run Code Online (Sandbox Code Playgroud)

bash redirect

9
推荐指数
1
解决办法
4396
查看次数

GitHub作为单独的回购发行?

已经有一个GitHub问题API,但有没有人成功实现双向?那是:

git clone git@github.com:user/repo.issues.git # Like for wiki
editor repo.issues/1.json
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

瞧,一个新的/更新的问题#1!

在接受任何推送之前,它可以使用预接收挂钩进行验证,因此无效格式化应该不是问题.

换句话说,有没有办法将GitHub项目的问题作为另一个GitHub回购处理?

github

9
推荐指数
1
解决办法
1122
查看次数

如何在脚本中使用Google应用专用密码?

自从在Google上启用双因素身份验证(也称为两步验证)后,我的Google导出脚本就不再有效了.计算机已经过验证和信任,但不知何故,脚本不是.实际上,每次运行cron作业时,我都会收到一个新的"Google验证码"并且脚本失败.我认为用wget或者一劳永逸地验证这些脚本应该是一件简单的事情curl,但我找不到任何关于如何做的文档.


Google身份验证方案经历了多次迭代,我似乎无法再使用curl或登录mechanicalsoup.我尝试使用类似的URL https://accounts.google.com/ServiceLogin?continue=https://calendar.google.com/calendar/exporticalzip&Email=username@gmail.com&Passwd=application-specific-password,并且我总是被重定向到登录页面,通常会显示消息"请使用您的帐户密码而不是应用程序专用密码".

python security bash google-authentication

9
推荐指数
1
解决办法
5530
查看次数

通过在Bash脚本中将dirname的结果传递给basename来获取父目录的名称

给出像这个test/90_2a5/Windows这样的路径

我试图使用命令获取结果90_2a5dirname获取路径,然后basename获取名称.

当我尝试在一行中尝试将结果dirname传递给时,会出现问题basename.

我试过这个,但似乎我用错了方法.

path="test/90_2a5/Windows"   
finalName= basename var | dirname $path  
echo "$finalName"
Run Code Online (Sandbox Code Playgroud)

问题是finalName是一个空字符串,这意味着结果dirname不是重定向.

bash shell scripting

9
推荐指数
2
解决办法
2万
查看次数

如何获取函数签名对应的TypedDict?

假设我有一个像这样的函数签名:

def any_foo(
    bar: Bar,
    with_baz: Optional[Baz] = None,
    with_datetime: Optional[datetime] = None,
    effective: Optional[bool] = False,
) -> Foo
Run Code Online (Sandbox Code Playgroud)

我当然可以复制它的声明并对其进行足够的修改以创建以下内容TypedDict

AnyFooParameters = TypedDict(
    "AnyFooParameters",
    {
        bar: Bar,
        with_baz: Optional[Baz],
        with_datetime: Optional[datetime],
        effective: Optional[bool]
    }
)
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个非常简单的转换,我想知道是否有一些简单的方法可以直接从函数创建这个TypedDict(或至少是对)。name: type

python typing python-3.x

9
推荐指数
1
解决办法
748
查看次数

逐行应用补丁

由于我当时坚持使用Subversion和shell工具,所以git-gui这是不可能的.是否有任何shell工具以交互方式逐行应用补丁?

patch

8
推荐指数
1
解决办法
5782
查看次数

如何在一次操作中git获取svn fetch + rebase?

我刚刚发现即使该rebase部分git help svn

这将从当前HEAD的SVN父级获取修订,并针对它重新定义当前(未提交到SVN)的工作.

(我的重点)并不意味着rebase 包含一个git svn fetch.除了命名,是否有一些方法可以运行单个git svn命令来执行这两个操作

我想这样做的原因是我只在一个分支上写,所以我想要rebase那个,我经常阅读其他分支,所以我想要fetch那些.

git git-svn

8
推荐指数
2
解决办法
6058
查看次数

如何在Factory Girl Rails中使用Pry?

为了调试我rescue binding.pry在有问题的行末尾插入的工厂:

after_create do |my_object, proxy|
  my_object.foreign_key_id = proxy.generated_attribute rescue binding.pry
Run Code Online (Sandbox Code Playgroud)

不幸的是,在结果FactoryGirl::Declaration::Implicit上下文中,我似乎无法访问上下文,就像我在"普通"代码(NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>)中那样.如何检查和处理my_object,并proxy撬开会话中?

该代码作为黄瓜功能背景的一部分调用:

Given the following my_objects exist:
| property |
| value    |
Run Code Online (Sandbox Code Playgroud)

factory_girl_rails并且factory_girl/step_definitions.rb是支持脚本所必需的.

ruby-on-rails ruby-on-rails-3 pry factory-bot

8
推荐指数
1
解决办法
1363
查看次数

在Bash脚本中调用C函数

到相关的问题3451993,是有可能调用在bash脚本的功能而言是内部subst.c(在Bash源代码)?

c bash

7
推荐指数
2
解决办法
9321
查看次数

如何检查Lua中是否存在模块?

我正在使用xdg-menu-to-awesome-wm生成包含GNOME菜单的Lua文件,以包含在Awesome WM中.由于发电机脚本可能无法安装,我需要的Lua一些方法来只requiremenu模块,如果它存在.

我不想查看文件名,因为它可能在任何地方package.path.一种选择是忽略当模块不存在创建的例外,但我宁愿不忽略任何其他异常-我想知道,如果模块包含任何语法或其他错误.遗憾的是,引用没有指定可以生成哪些异常,所以我不知道该怎么做.

lua

7
推荐指数
3
解决办法
6547
查看次数