将参数从 csh 传递给程序,就像它们一样

Posted

技术标签:

【中文标题】将参数从 csh 传递给程序,就像它们一样【英文标题】:Pass arguments from csh to program, exactly as they are 【发布时间】:2013-06-05 04:21:10 【问题描述】:

我有一个 csh 脚本,它使用“source”执行,并将其所有参数传递给程序:

% alias foo source foo.csh
% cat foo.csh
./bar $*
# Some uninteresting stuff

如果我运行source foo.csh a b c,一切正常。但并非总是如此:

    foo "a b" "c d": 我希望 bar 得到两个参数 - a bc d。相反,它得到 4。

    foo a "*" b: * 扩展为文件列表。我只想要角色*。 额外的信用 - foo a * b 应该以同样的方式工作。我知道它的问题更大,我愿意没有它。

我尝试的一件事是将./bar $* 更改为./bar "$*"。这有助于使用星号,但现在 bar 总是在一个参数中获取所有内容。

注意事项:

    我们公司使用csh作为登录shell,所以在使用source的时候一定要使用。知道csh programming is considered harmful,我在bar 中实现了所有逻辑,并在脚本中保留了最低限度。

    如果您建议重新定义别名,重要的是要看到重定向仍然有效 (foo | grep hello),并且如果 ctrl-C 破坏了脚本,则会进行适当的清理。

【问题讨论】:

【参考方案1】:

同时,我自己也找到了答案:

./bar $argv:q

:q 修饰符负责处理事情。它传递给bar 得到的参数与foo 完全相同。

来源:http://www.staff.tugraz.at/reinfried.o.peter/unix/cshell.html

【讨论】:

以上是关于将参数从 csh 传递给程序,就像它们一样的主要内容,如果未能解决你的问题,请参考以下文章

将“-j”参数从 gradle 传递给 ninja

将参数从jsp动态传递给另一个jsp

干净地将参数列表传递给 ProcessStartInfo

如何将命名参数列表传递给打开的 Windows 窗体应用程序

看完就能手写RPC框架了

如何在 Dapper Query 的动态参数中传递多个条件,就像我们为 IN 运算符传递的一样