【问题标题】:Pass arguments from csh to program, exactly as they are将参数从 csh 传递给程序,就像它们一样
【发布时间】: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,一切正常。但并非总是如此:

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

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

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

注意事项:

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

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

【问题讨论】:

    标签: linux csh


    【解决方案1】:

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

    ./bar $argv:q

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-06
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2012-05-09
      • 2023-03-03
      相关资源
      最近更新 更多