小编rad*_*man的帖子

出错时自动退出bash shell脚本

我一直在编写一些shell脚本,如果能够在任何命令失败的情况下暂停执行所述shell脚本,我会发现它很有用.请参阅下面的示例:

#!/bin/bash  

cd some_dir  

./configure --some-flags  

make  

make install
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,如果脚本无法更改为指示的目录,那么如果失败,它肯定不会在之后执行./configure.

现在我很清楚我可以对每个命令进行if检查(我认为这是一个无望的解决方案),但是如果其中一个命令失败,是否有全局设置使脚本退出?

error-handling bash shell exit

564
推荐指数
8
解决办法
23万
查看次数

为什么在使用grep两次时没有显示输出?

基本上我想知道为什么这不输出任何东西:

tail --follow=name file.txt | grep something | grep something_else 
Run Code Online (Sandbox Code Playgroud)

你可以假设它应该产生输出我已经运行了另一行来确认

cat file.txt | grep something | grep something_else
Run Code Online (Sandbox Code Playgroud)

好像你不能多次输出尾巴的输出!?任何人都知道这笔交易是什么,有没有解决方案?

编辑:要回答到目前为止的问题,该文件肯定有grep应显示的内容.作为证据,如果grep是这样做的:

tail --follow=name file.txt | grep something
Run Code Online (Sandbox Code Playgroud)

输出显示正确,但如果使用它:

tail --follow=name file.txt | grep something | grep something
Run Code Online (Sandbox Code Playgroud)

没有显示输出.

如果有帮助我运行ubuntu 10.04

linux command-line grep file pipe

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

如何在CMake中正确创建目标之间的依赖关系?

我试图使用CMake在C++项目和它使用的库之间建立一些简单的依赖关系.

设置如下

  • 项目
    • 依赖

项目本身包含源文件,其中包含来自Dependency和可执行文件构建时的头文件,它需要与Dependency静态库链接.

到目前为止,我能得到这个工作,但我必须指定包括目录DependencyCMakeLists.txt的文件Project手动.我希望自动将其拉出来,并且我已经探索了使用find_package()命令这样做的选项,只取得了有限的成功并使事情变得更加复杂.

我想要做的就是Dependency之前已经构建Project并具有Project与库的链接并具有其包含目录.有一个简单的方法来实现这一目标吗?

我目前的CMake文件:

Project,档案CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)
project (Project)
include_directories ("${PROJECT_SOURCE_DIR}/Project")
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
add_dependencies(Project Dependency)
Run Code Online (Sandbox Code Playgroud)

Dependency,档案CMakeLists.txt:

project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
Run Code Online (Sandbox Code Playgroud)

c++ build cmake

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

在TypeScript中导入Victor.js吗?

我正在尝试在TypeScript项目(3.0.1)中使用victor.js库,并且在尝试导入和使用它时确实心痛。我已经从npm以及它的类型(victor @ types / victor)安装了它。我尝试了多种导入方式,但似乎无法使其与IDE中的类型解析一起导入。

我已经尝试过这些:

import { Victor} from 'victor';  
import * as v from 'victor'; 
Run Code Online (Sandbox Code Playgroud)

(只有通过打开“ allowSyntheticDefaultImports”标志并引用其默认导出,才能使用ECMAScript导入/导出引用此模块)

import Victor = require('victor');  
Run Code Online (Sandbox Code Playgroud)

(在定位ecmascript模块时有效,但不兼容)

const Victor = require("victor");  
Run Code Online (Sandbox Code Playgroud)

(有效导入,我可以构造对象,但不存在任何类型)

我敢肯定,外面有人遇到过类似的情况。如果有帮助,则victor的index.js顶部具有以下行:

exports = module.exports = Victor;
Run Code Online (Sandbox Code Playgroud)

javascript import module typescript

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

获取包含lua文件的路径

我想知道是否有办法获取当前正在执行的lua脚本文件的路径?

这特别不是当前的工作目录,可能完全不同.我知道luafilesystem会让我获取当前的工作目录,但它似乎无法告诉当前正在执行的脚本文件.

谢谢

编辑:我没有从标准命令行解释器运行,我正在通过luabind从C++二进制文件执行脚本.

filesystems lua

17
推荐指数
4
解决办法
3万
查看次数

CMake Regex将小写转换为大写

嗨我正在尝试使用cmake文件中的正则表达式将一串小写字母转换为大写.

我正在使用的命令是:
string(REGEX REPLACE 匹配替换输出输入)

有谁知道如何指定使用cmake的正则表达式工具将每个小写字母替换为大写字母?

regex cmake

11
推荐指数
1
解决办法
9569
查看次数

如何使用更严格的限制来自定义`<input>`元素

TLDR;(更新)

  1. 是否有一种方法可以<input>在不使用type=number属性设置的情况下发出信号提示类型为数字的信号。
    1. 即移动设备识别并显示数字键盘等
  2. 对于具有的<input>type=number有一种方法可以吞下所有不会产生有效数字的键输入
    1. 在通过浏览器将字符添加到输入中之前,请勿进行垃圾删除 keyup

请阅读以下原始详细说明

我的问题如下;

我有一个html <input>元素,我只想接受数字并在移动设备上被识别为数字字段。我也希望吞下无效字符,就像标准type=number吞咽不允许的字符一样。

我尝试了明显的方法,type=number但是它有很多缺点。具体来说,它允许使用“ e”,“ +”和“-”(至少在chrome中),但是使用JS可以轻松解决这些问题。真正的问题在于“。” 字符,我希望能够输入浮点数,例如“ 0.10”,“ 5.5054”,但又不想输入无效的字符串,例如“ 0.10.1”。我试图通过仅允许1'来解决此问题。一次,但是input.value由于浏览器提示“ 5” 而失败。变为'5','5 ..'变为null(!),并且似乎无法获得在输入​​中键入的原始字符串值。以上意味着检查现有的'。'并采取行动似乎是死路一条...

核心问题:

  1. 我有没有办法检查和验证输入?
  2. ``有没有一种方法可以将输入标记为数字而无需后勤负担type=number

注意:
*我意识到您可以粘贴您想要的任何内容,我认为行为是病理性的,因此不应被输入预防所涵盖。

更新:
为了澄清,我已经尝试过keypresskeydown等事件和他们没有足够的,因为我想看看有多少”的输入目前存在选择是否要允许其他。在这一点上input.value,浏览器已经按摩了,以删除“。”。我想有条件地允许基于当前输入的'。'字符。

示例:
HTML(为简洁起见,使用角度样式绑定)

<input type="number" (keydown)="keyDown()">
Run Code Online (Sandbox Code Playgroud)

JS

function keyDown($event: KeyboardEvent) {
  const inputField = // obtain reference to input element
  const value = inputField.value;
  if ( value.indexOf('.') !== -1 && $event.key …
Run Code Online (Sandbox Code Playgroud)

html javascript

11
推荐指数
1
解决办法
405
查看次数

svn ssh连接的详细日志记录

有没有人知道如何让SVN在通过ssh连接进行操作时记录ssh连接的详细信息?

当我无法连接svn总是给我:

To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
Run Code Online (Sandbox Code Playgroud)

我查看了配置的[tunnels]部分,目前没有启用任何内容.看起来您可以指定如何调用ssh,我尝试通过此方法为ssh指定-v,但它似乎没有效果.当SVN尝试连接时,我真正想要的是ssh的-v输出.虽然任何额外的日志记录都会很好.

如何通过SVN获取详细的ssh日志记录?

我在linux上的命令行使用SVN.

linux svn ssh

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

Boost池分配器不会使用g ++中的std :: allocate_shared进行编译

编辑:

澄清我想要的结果,因为我还没有沟通得好:
为了能够使用std::allocate_sharedboost::fast_pool_allocator作为使用G ++ 4.8或更高升压1.56.0的分配方法.目前这适用于g ++ 4.6,并且在4.7,4.8和4.9上失败.

要清楚,我不打算为g ++ 4.7做这项工作.

测试代码产生错误:

#include "boost/pool/pool.hpp"
#include "boost/pool/pool_alloc.hpp"

#include <memory>

int main(int argc, char** argv)
{
  auto fails = std::allocate_shared<int>( boost::fast_pool_allocator<int>() );

  auto works = std::allocate_shared<int>(boost::fast_pool_allocator<int>(), 5);
}
Run Code Online (Sandbox Code Playgroud)

在我们的代码库中,我们将std :: allocate_shared与boost池分配器结合使用,这会导致一些讨厌的编译错误.然而,这已经在不同版本的g ++中变形和变化:
细节:64位,(4.7,4.8)-std = c ++ 11,(4.6)-std = c ++ 0x,boost 1.56.0
4.6 - 编译愉快
4.7 -崩溃编译器

内部编译器错误:重新输入错误报告例程.如果合适,请提交完整的错误报告,并提供预处理的来源.请参阅说明.存储在/tmp/cca0Emq9.out文件中的预处理源,请将其附加到您的bug报告中.

4.8 - 令人讨厌的编译错误

/XXXXXXXXXX/boost/boost/pool/pool_alloc.hpp:399:
Run Code Online (Sandbox Code Playgroud)

错误:使用删除功能 '的std :: _ Sp_counted_ptr_inplace,(__gnu_cxx :: _ Lock_policy)2U> :: _ Sp_counted_ptr_inplace(常量性病:: _ Sp_counted_ptr_inplace,(__gnu_cxx :: _ Lock_policy)2U>&)' 的{新(PTR)T(t)的; …

c++ boost compiler-errors g++ c++11

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

如何从python文件中导入Boost.Python

我正在使用Boost.Python在我的C++可执行文件中嵌入一个解释器并执行一些预先编写的脚本.我有它的工作,所以我可以调用python文件中的函数,但我想使用的python代码导入外部文件,这些导入失败,因为'没有名为'的模块.如果我直接从python运行脚本,一切都按预期工作.

所以我的问题是在通过C++绑定运行的python脚本中导入模块的正确方法是什么?

C++代码:

#include "boost/python.hpp"

int main(int argc, char** argv)
{
  try
  {
    Py_Initialize();
    boost::python::object test = boost::python::import("__main__");
    boost::python::object testDict = test.attr("__dict__");
    boost::python::exec_file("test.py", testDict, testDict);

  }
  catch(boost::python::error_already_set& e)
  {
    PyErr_Print();
  }
return 0;

}
Run Code Online (Sandbox Code Playgroud)

Python代码:

import ModuleX
Run Code Online (Sandbox Code Playgroud)

c++ python import boost boost-python

7
推荐指数
1
解决办法
3922
查看次数