You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免dotnet-script拦截脚本传入的参数?

解决dotnet-script拦截自定义参数的问题

使用dotnet-script时,脚本预期接收的参数(比如-v)会被dotnet-script本身拦截,导致脚本无法获取该参数,反而输出dotnet-script的版本号。示例脚本和输入输出如下:

示例脚本:

#!/usr/bin/env dotnet-script

Console.WriteLine($"Hello World:\n{string.Join('\n', Args)}");

输入输出示例:

> ./script.csx "hi again"
Hello World:
hi again

> ./script.csx "hi again" -v
1.4.0

彻底避免参数拦截的方法

要让dotnet-script不再拦截任何参数,直接将所有参数传递给脚本,可通过以下两种方式实现:

方式1:调用时添加分隔符--

执行脚本时,用--作为dotnet-script和自定义参数的分隔符,它会告知dotnet-script将后续所有参数原封不动传递给脚本。

示例命令:

> ./script.csx "hi again" -- -v

此时输出为:

Hello World:
hi again
-v

方式2:修改脚本shebang行(永久生效)

修改脚本头部的shebang行,显式添加--,这样直接执行脚本时,所有参数都会自动传递给脚本,无需每次手动添加分隔符。

修改后的脚本:

#!/usr/bin/env dotnet-script --

Console.WriteLine($"Hello World:\n{string.Join('\n', Args)}");

此时执行原命令:

> ./script.csx "hi again" -v

会得到预期输出:

Hello World:
hi again
-v

内容的提问来源于stack exchange,提问作者Dov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:37:02