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

时间:2013-06-09 09:15:32

标签: linux csh

我有一个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应该以相同的方式工作。我知道这更有问题,我愿意没有它。

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

    注意:

    1. 我们公司使用csh作为登录shell,因此在使用source时我必须使用它。知道了csh programming is considered harmful,我在bar中实现了所有逻辑,并在脚本中保留了最低限度。

    2. 如果你建议重新定义别名,重要的是要看到重定向仍然有效(foo | grep hello),并且如果ctrl-C破坏了脚本,那么正确的清理。

    3. 感谢。

1 个答案:

答案 0 :(得分:18)

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

./bar $argv:q

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

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