使用C#像google/zx一样编写脚本

google/zx

zx是谷歌开源的一个能够帮助开发者快速编写脚本的工具,它使用JavaScript作为编程语言。

示例脚本如下:

#!/usr/bin/env zxawait $`cat package.json | grep name`let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`await Promise.all([$`sleep 1; echo 1`,$`sleep 2; echo 2`,$`sleep 3; echo 3`,
])let name = 'foo bar'
await $`mkdir /tmp/${name}`

将代码保存为mjs文件,使用zx即可执行脚本:

zx ./script.mjs

dotnet-script

dotnet-script是一个开源的.net core global tool, 使用它,开发人员可以获得在命令行直接运行C#脚本文件的能力。

使用下列命令安装dotnet-script:

dotnet tool install -g dotnet-script

新建一个csx文件,文件内容如下:

Console.WriteLine("My IO");

然后,使用下列命令运行脚本:

dotnet-script ./test.csx

2f4c9b81b905859d8938ea52b96c06a5.png

ProcessX

上面这种方式写的还是C#程序而不是脚本。

不过,利用Nuget包ProcessX,提供了执行脚本的静态方法:

#r "nuget: ProcessX, 1.5.0"using Zx;
using static Zx.Env;// 直接执行命令
await "echo My IO";// 转义后执行
var str = "My IO";
await process($"echo {str}");// 带颜色输出文本
log("My IO", ConsoleColor.Red);

7f631a498a51347190101eadd511c924.png

结论

使用dotnet-script+ProcessX,我们也可以写出类似google/zx的脚本了。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis 查询缓存_Redis缓存总结:淘汰机制、缓存雪崩、数据不一致....

在实际的工作项目中, 缓存成为高并发、高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征:在分层系统中处于内存/CPU具有访问性能良好,缓存数据饱和,有良好的数据淘…

5部适合学英语的动画电影,快和孩子一起看!

全世界只有3.14 % 的人关注了爆炸吧知识今天我们与大家分享5部非常适合小学生学习英语的动画电影,家长们可依据不同类别和主题为孩子挑选喜欢的影片,在家陪孩子一起观看。文末可免费领取哦~01 《丁丁历险记》讲述的是一天丁丁买了一只古老的船模送给船长…

OC面向对象—封装

OC面向对象—封装 一、面向对象和封装 面向对象的三大特性:封装(成员变量)、继承和多态 在OC语言中,使用interface和implementation来处理类。 interface就好像暴露在外面的时钟表面,像外界提供展示以及接口。implemen…

如何把 .NET 进程中的所有托管异常找出来?

大家应该知道 .NET异常 本质上就是一个 Object 对象,也就是说只要你执行了 new XXException() 语句,那么它就会分配到 GC Heap 上。这也就意味着,如果你有一个进程的dump文件,那你就可以从dump中导出程序最近都抛了什么异常&#…

编程题: 将一个矩阵(二维数组)顺时针旋转90度

在一个m*n的矩阵任取一个元素(i, j),发现旋转后对应的元素下标变成:(j, m-i)。 进一步研究一下矩阵的各种翻转可知:沿左上到右下的对角线翻转:(i, j)与(j, i)对换; 沿右上到左下的对角线翻转:(i, j)与(n-j, m-i)对换;上下翻转:(i,…

activiti5.9 mysql_Activiti5.9换成MySQL数据库

Activiti5.9默认的数据库是db,可是我们项目中运用的是mysql,那只好把db换成mysql步骤:1.下载activiti-5.9.zip 2.解压activiti-5.10.zip并移动(ACTIVITI_HOMED:\myspace\activiti-5.9) 3.修改ACTIVITI_HOME\setup\build.db.properties文件&a…

10张让你大脑崩溃的图,敢接受挑战吗?

全世界只有3.14 % 的人关注了爆炸吧知识快睡了吧?来做一组视觉游戏~一些人热爱挑战各种错觉,如果你也是这类型图片的粉丝,这10张图片会让你非常过瘾!入门篇【挑战一】在这张图片中,你能看到几个红球?5个&am…

Hdu 3478 Catch

如果出现遍历图中的某个点都是在奇数时刻或者偶数时刻,那么小偷的藏点就是根据时间判定在某些的奇数点和偶数点了。 如果图出现奇数的环,即:有一个环由奇数个点组成,那么环中的某个点在奇数和偶数时刻都能到达(可以画图试试)。其实…

节点

常用节点类型 节点类型常量 节点类型值 元素节点 element 1 属性节点 attribute 2 文本节点 text 3 注释节点 comment 8 文档…

Source Generator 单元测试

Source Generator 单元测试IntroSource Generator 是 .NET 5.0 以后引入的一个在编译期间动态生成代码的一个机制,介绍可以参考 C# 强大的新特性 Source GeneratorGetStarted使用起来还算比较简单的,我平时一般用 xunit,所以下面的示例也是使…

GetItemValue、Itemname使用方法

使用GetItemValue方法(1) NotesDocument类別的GetItemValue方法会传回文件中指定栏位的数值。不论栏位值是文字、数字、时间日期…等等, GetItemValue都是以阵列型态来回传,即使其中也沒有任何数值了。 使用GetItemValue方法(2) 语法 valueArray NotesD…

mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"用于处理分布式环境下高性能事务一致性问题。…

又一个中国男人荣获巨奖!拿奖拿的手软,却坦言“我对诺奖没有兴趣”...

全世界只有3.14 % 的人关注了爆炸吧知识获得诺奖似乎只是时间问题2020年9月10日,2021年科学突破奖( BREAKTHROUGH PRIZES)正式公布。来自中国香港的科学家卢煜明获得了生命科学科学突破奖,华人数学家孙崧获得了数学新视野奖。前几…

ffbe攻略站_最终幻想勇气启示录ffbe兵员强化攻略

最终幻想勇气启示录兵员如何强化?兵员强化后有哪些加强?来看看9k9k小编带来的最终幻想勇气启示录ffbe兵员强化攻略。在兵员选栏中,我们可以看到有强化兵员这一选项,在这里面,我们可以选择兵员进行强化,强化…

无法打开物理文件“E:\Database\VRVIES6841-FZ01-Global\VRVEIS.mdf”。操作系统错误 5:“5(拒绝访问。)”...

在用SQLServer2012附加SQLServer2000备份的数据库事,报如下错误: 无法打开物理文件“E:\Database\VRVIES6841-FZ01-Global\VRVEIS.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120) 解决方法: 1.先在…

IIS6注册.net4.0

开始----运行---cmd回车-----cd c:/windows/microsoft.net/framework/v4.0.30319回车,然后输入aspnet_regiis.exe -ir 就OK了

不止命令行!自定义VS生成事件

前言在VS中打开项目属性,选择“生成事件”选项卡。在“生成前事件命令行”或“生成后事件命令行”文本框中可以输入任何命令提示符或.bat文件中有效的命令:但是,有没有可能执行更丰富的命令呢?生成事件的本质上面设置的“生成事件…

如果你女朋友不让你看她卸妆......

1 如果你女朋友不让你看她卸妆▼2 扫地机器人的正确用法(图源网络,侵删)▼3 来比个心(素材来源网络,侵删)▼4 精彩攻防战▼5 那些吃辣条的小学生长大了...▼6 人生的道路上有时候也要回头看看▼7 先礼…

[9月29日的脚本] 枚举SharePoint列表(PowerShell)

脚本下载: SPListEnumerator.zip http://gallery.technet.microsoft.com/scriptcenter/SPListEnumerator-PowerShell-b0ce0b9f 本脚本通过一个“大型”列表或者是文档库来枚举并为相关项提供信息。 在SharePoint(2007版和2010版)中,我们有一个…

深入理解javascript函数

函数实际上是对象,每个函数都是Function类型的实例,且与其他类型一样具有属性和方法.由于函数是对象,故函数名即为指向函数的指针,正是由于这一点,函数没有重载,重复定义函数只会后者替换前者. 函数的定义 函数的定义有三种: 函数声明function sum(num1,num2){ return num1num2…