将参数从 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 b
和 c 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 传递给程序,就像它们一样的主要内容,如果未能解决你的问题,请参考以下文章