当前位置: 首页 > 知识库问答 >
问题:

制作bash c#编译器?[重复]

柯栋
2023-03-14

我想开始在c#中开发,但是我使用Linux和VSCode进行开发,由于一些错误,我找不到答案,VSCode不运行代码,所以我决定借助这个链接(在linux终端上运行C#代码)来制作一个bash脚本来完成这部分代码:

mcs -out:hello.exe hello.cs
mono hello.exe

到目前为止,我是这样做的:

#Trial
function cs_compiler(){
mcs -out:$2 $1
mono $2
}

它确实可以工作,但是我想让2美元(第二个参数)自动以1美元(第一个参数)命名,因此我不需要写2美元的值,只需写1美元创建一个同名的exe并用mono运行该exe。第二件事我想检查cs文件的exe形式是否已经存在,如果存在,只需运行它(mono)而不执行mcs-out。

如果给您带来不便,我很抱歉,我不熟悉stackoverflow和编码。

共有1个答案

晏华奥
2023-03-14

来自basename:

Strip directory and suffix from filenames

遗憾的是,你必须事先知道后缀才能使用它。所以:

cs_compiler() {
    local infile outfile
    infile="$1"
    outfile="$(dirname "$1")/$(basename "$1" .cs)"
    mcs -out:"$outfile" "$infile"
    mono "$oufile"
}
  1. 引用你的变量。
  2. 缩进你的代码

但最好是去掉dot后面的部分:

infilename=$(basename -- "$1") # some temp variable
outfile="$(dirname "$infile")/${infilename##*.}"

请参阅这篇关于如何从文件中提取文件名的帖子。

 类似资料:
  • 我使用maven命令来清理、构建整个项目、创建war并部署到服务器。我不能使用Intellij来做这件事,因为我只有社区版。它在与intellij相同的目录中构建项目。 为了加快速度,我编写了一个脚本,可以在本地“target”目录中找到比服务器中更新的已编译文件,并进行复制。虽然一切正常,但问题是Intellij并没有将使用maven编译的类视为应该跳过并重新构建整个项目的类。 目前它的工作原理

  • 我有一个在测验中出现的代码 输出应该是什么?原来答案是-1,而我原本以为是7。Java破了吗?

  • 我用的是jdk 6。 我有一个界面: 我有一个名为Widget的抽象类,它实现了DisplayValueListener,并声明如下: 我还有另一个像这样扩展Widget的抽象类: 这是我从NetBeans中的编译器得到的信息: 名称冲突: setDisplayValue(Void, String)在相机Widget覆盖一个方法,其擦除与另一个方法相同,但都不覆盖另一个第一个方法:setDispl

  • 编译器 编译器将用一种语言编写的代码转换为另一种语言,而无需更改程序的含义。还期望编译器应该使目标代码高效且在时间和空间方面得到优化。 编译器设计原理提供了翻译和优化过程的深入视图。编译器设计涵盖了基本的转换机制以及错误检测与恢复。它包括词法,语法和语义分析作为前端,以及代码生成和优化作为后端。 为什么要学习编译器设计? 计算机是软件和硬件的平衡组合。硬件只是机械设备的一部分,其功能由兼容的软件控

  • 创建指令时,可以将代码放入编译器、链接函数或控制器中。 在文件中,他们解释说: 编译和链接功能用于角度循环的不同阶段 然而,对我来说还不清楚,哪种代码应该去哪里。 例如:我可以在compile中创建函数并将它们附加到link中的作用域,还是只将函数附加到controller中的作用域? 如何在指令之间共享控制器,如果每个指令可以有自己的控制器?控制器是真的共享,还是只是范围属性?