标签: scripting

Subversion钩子的常见类型

人们使用哪种钩子脚本进行Subversion?只是一般的想法,但代码也会很棒!

svn version-control scripting svn-hooks

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

通过引用传递参数

我想询问是否可以通过引用将参数传递给脚本函数:

即在C中做一些看起来像这样的事情:

void boo(int &myint) { myint = 5; }

int main() {
    int t = 4;
    printf("%d\n", t); // t->4
    boo(t);
    printf("%d\n", t); // t->5
}
Run Code Online (Sandbox Code Playgroud)

那么在BASH我想做的事情如下:

function boo () 
{

    var1=$1       # now var1 is global to the script but using it outside
                  # this function makes me lose encapsulation

    local var2=$1 # so i should use a local variable ... but how to pass it back?

    var2='new'    # only changes the local copy 
    #$1='new'     this is wrong …
Run Code Online (Sandbox Code Playgroud)

bash shell scripting pass-by-reference

40
推荐指数
6
解决办法
4万
查看次数

git:快速命令转到工作树的根目录

我想要一个简单的git命令来访问存储库的"根".

我开始使用脚本,但想到我无法更改shell的活动目录,我不得不做一个功能.不幸的是,我不能用非破折号形式"git root"直接调用它.

function git-root() {
 if [ -d .git ]; then
  return 0
 fi

 A=..
 while ! [ -d $A/.git ]; do 
  A="$A/.."
 done
 cd $A
}
Run Code Online (Sandbox Code Playgroud)

你有更好的解决方案吗?(功能写得很快,欢迎提出建议)

git bash scripting

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

无法在bash脚本中设置变量

我正在尝试使用从AppleScript按计划运行的bash脚本自动将文件从文件夹自动移动到新文件夹.我试图在Mac OSX上编写一个bash脚本,它一直在失败.简而言之,这就是我所拥有的(我所有echo的用于错误检查):

#!/bin/bash
folder = "ABC"
useracct = 'test'
day = date "+%d"
month = date "+%B" 
year = date "+%Y"
folderToBeMoved = "/users/$useracct/Documents/Archive/Primetime.eyetv"
newfoldername = "/Volumes/Media/Network/$folder/$month$day$year"
ECHO "Network is $network" $network
ECHO "day is $day"
ECHO "Month is $month"
ECHO "YEAR is $year"
ECHO "source is $folderToBeMoved"
ECHO "dest is $newfoldername"
mkdir $newfoldername
cp -R $folderToBeMoved $newfoldername
if [-f $newfoldername/Primetime.eyetv];
    then rm $folderToBeMoved;
fi
Run Code Online (Sandbox Code Playgroud)

现在我的第一个问题是我根本无法设置变量.即使是文字的,我只是把它等于一些文字.我echo的所有内容都是空白的.我也无法抓住日,月或年,它也是空白的.

我收到一条错误,说找不到-f.

我收到一条错误消息,指出文件意外结束.

我制作了文件并做了一个 chmod u+x scriptname.sh

我不确定为什么一切都没有用.我是OSX上这个bash脚本的新手,只有windows vbscript的经验.任何帮助都会很棒,谢谢!

bash scripting

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

Git日志表格格式

我有一个简单的别名来显示最后的提交:

log --pretty=format:'%h %an %s' -10
Run Code Online (Sandbox Code Playgroud)

如何使结果显示在列中,如下所示:

898e8789 Author1             Commit message here
803e8759 Other Author name   Commit message here
Run Code Online (Sandbox Code Playgroud)

git bash scripting

40
推荐指数
5
解决办法
1万
查看次数

如何编译linux shell脚本成为独立的可执行文件*二进制*(即不仅仅是例如chmod 755)?

我正在寻找一个免费的开源工具集,它将编译各种"经典"脚本语言,例如Korn Shell,ksh,csh,bash等作为可执行文件 - 如果脚本调用其他程序或可执行文件,对于它们包含在单个可执行文件中.

原因:

  1. 混淆代码交付给客户,以便不泄露我们的知识产权 - 交付到客户自己的机器/系统上,我无法控制我可以设置的访问权限,因此程序文件必须是二进制的通过在文本编辑器或hexdump查看器中查看,无法轻易看到工作.

  2. 为客户制作单个,简单部署的程序,而不需要/或少量任何外部依赖项.

我更喜欢简单的东西而不需要包管理器,因为:

  1. 我不能依靠客户的知识来执行(联合国)包装说明和

  2. 我不能依赖管理其机器的策略来安装软件包(实际上是来自第三方).

最简单的首选方法是能够将正常运行的单个可执行文件编译为正确的机器代码,而不会产生任何依赖性.

binary obfuscation scripting executable compilation

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

CLI:在地址处写入字节(来自命令行的hexedit/modify binary)

是否有任何直接的方法来修改命令行中的二进制文件?假设我知道我的二进制包含1234abcd,我想将其更改为12FFabcd或FFFFabcd,甚至可能是FF34FFab0(你明白了):-)

如果不使用任何特殊用途工具(如http://stahlworks.com/dev/swiss-file-knife.html或类似工具),我将如何实现这一目标.

只使用标准的linux工具从命令行执行它会很棒.

或者甚至更好,而不是搜索十六进制字符串,我想直接替换在Offset 0x10000处写入FF,在Offset 0x100001处写入12,依此类推.

任何的想法?

提前致谢!

PS:我应该添加以下内容:

它应该是可编写脚本的,并直接从命令行运行.我正在寻找类似"二进制 - 包含在发行版 - 写入AB --at-offset 100000 --file thebinary.bin"之类的内容.我很确定使用"dd"是可能的,但是我无法绕过手册页.

shell scripting hex patch edit

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

使用shell脚本创建包含一些内容的文件

我需要配置一个文件很少的服务器,我想以编程方式进行.

我需要创建文件说/home/a.config,/var/spool/b.config,/etc/c.config

上面的文件有一些内容(多行).

我想创建一个shell脚本,它可以创建具有多行(大约10)的所有三个文件.我想知道我如何使用CAT命令来做到这一点.(内部shell脚本).

我正在寻找像这样的人

echo " going to create  /home/a.config"

cat "HOW CAN I HAVE MULTIPLE LINES HERE?? " >  /home/a.config 
Run Code Online (Sandbox Code Playgroud)

谢谢

unix shell scripting

39
推荐指数
4
解决办法
8万
查看次数

在Windows上批量等效的"源":如何从virtualenv运行python脚本

所以,我已经完成了一些bash脚本,但在Windows上只有很少的批处理脚本.我正在尝试激活python virtualenv,运行python脚本,然后在脚本退出时停用virtualenv.

我有一个名为env的文件夹,这是我的virtualenv,还有一个名为work的文件夹,其中包含我的脚本

这是我到目前为止所得到的:

%~dp0env\Scripts\activate.bat
python %~dp0work\script.py
deactivate
Run Code Online (Sandbox Code Playgroud)

但是,当我运行脚本时,它会激活virtualenv然后停止.它没有到达第二行并运行Python脚本.有没有办法"激活"激活脚本文件夹,以便可以运行其余的批处理脚本,就好像我从命令行调用了activate.bat一样?

python windows scripting batch-file virtualenv

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

Python:检查点是否在多边形内

我有一个描述Point的类(有2个坐标x和y)和一个描述Polygon的类,它有一个对应于角的列表(self.corners)我需要检查Point是否在多边形中

这是应该检查多边形中的Point in的函数.我正在使用Ray Casting Method

def in_me(self, point):
        result = False
        n = len(self.corners)
        p1x = int(self.corners[0].x)
        p1y = int(self.corners[0].y)
        for i in range(n+1):
            p2x = int(self.corners[i % n].x)
            p2y = int(self.corners[i % n].y)
            if point.y > min(p1y,p2y):
                if point.x <= max(p1x,p2x):
                    if p1y != p2y:
                        xinters = (point.y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
                        print xinters
                    if p1x == p2x or point.x <= xinters:
                        result = not result
            p1x,p1y = p2x,p2y
         return result
Run Code Online (Sandbox Code Playgroud)

我运行了一个具有以下形状和点的测试:

PG1 = (0,0), (0,2), (2,2), (2,0)
point = (1,1)
Run Code Online (Sandbox Code Playgroud)

即使该行内的点,该脚本也会愉快地返回False.我无法找到错误

python scripting point polygon

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